2016-03-25 18 views
1

Sadece bir projeyi laravelde başlatıyorum ve bu benim için yeni bir ortam. Ben PHP ve aynı zamanda modelleri ilişki aşina. Ancak laravel yapısı, başlangıç ​​için biraz karmaşıktır. Yani sorun, bir sorum var ve Kurs tablosu, Tek bir soru daha sonra bir kursa sahip olabilir, bu yüzden kurs kimliğini ve soru kimliğini tutan bir başka tablo oluşturdum.laravel'de hasmany ilişkiyle sonuç bulun

Soru Modeli

namespace App\Models; 
use Illuminate\Database\Eloquent\Model; 

class Question extends Model{ 

    protected $primaryKey = "id"; 

    public function courses(){ 
     return $this->hasMany('App\Models\CourseQuestion'); 
    } 
} 

Ders modeli

namespace App\Models; 
use Illuminate\Database\Eloquent\Model; 

class Course extends Model { 
    protected $primaryKey = "id"; 

    public function questions(){ 
     return $this->hasOne('App\Models\CourseQuestion'); 
    } 
} 

Ve geçen courseQuestion modeli i sonucu elde

namespace App\Models; 
use Illuminate\Database\Eloquent\Model; 

class CourseQuestion extends Model { 
    protected $primaryKey = "id"; 

    public function questions(){ 
     return $this->hasOne('App\Models\Question'); 
    } 

    public function courses(){ 
     return $this->hasMany('App\Models\Course'); 
    } 
} 

Ve kontrolör -

class IndexController extends BaseController { 

    public function index(){ 
     $user = Question::with('user','courses','branches')->find(100); 
     echo "<pre>"; 
     print_r($user); die; 
    } 
} 

Bu nedenle dersler sadece tabiki ve üçüncü tabloda saklanan soruları döndürür, ancak dersin adını ilgili kimlik olarak istiyorum. Lütfen 'a yardım edin.

cevap

0
namespace App\Models; 

use Illuminate\Database\Eloquent\Model; 

class Question extends Model 
{ 

    protected $primaryKey = "id"; 

    public function courses() 
    { 
     return $this->hasMany('App\Models\CourseQuestion', 'course_question_id', 'id') 
     ->select('id', 'name'); 
    } 
} 
+0

> akıllıca değişim gibi tüm işlev ... > hasMany/hasone/ > 1 => modeller yola belongsTo > 2 => local_foreignkey isim > 3 => asıl tablo PrimaryKey> ve sonda gelen kullanım > gerektiriyorsa, bazı ek spesifik alanlar almak için seçin. –

+0

Bu cevap size memnun ..? –

İlgili konular