2016-04-01 20 views
0

boş ilişki (Posta ve Kategori) IT'S ile düzgün ilişkiler yapılandırılmış Modeli döndürüyor relation's dinamik nitelikleri ama 2 model belirledik

class Post extends Model 
{ 
    protected $fillable = [ 
     'title', 
     'excerpt', 
     'body', 
     'featured', 
     'published', 
     'category_id', 
    ]; 

    public function category() 
    { 
     return $this->belongsTo('App\Category'); 
    } 
} 

class Category extends Model 
{ 
    protected $fillable = [ 
     'name', 
    ]; 

    public function posts() 
    { 
     return $this->hasMany('App\Post'); 
    } 
} 

Ve Post's depolama yöntemi

public function store(Request $request) 
{ 
    $post = Post::create($request->all()); 
    return redirect('admin/posts'); 
} 
olduğunu

Sorun şu ki, gerçekten çalışıyor, category_id'u masaya yerleştiriyor ve $post->category->name'u kullanarak tüm dinamik verileri getirebiliyorum, ancak var_dump($post->relation) bir getiri alıyorum.

Yeni bir Post modeli oluşturursam, tüm özellikleri ayarlayın, kaydedin ve ardından Kategori modelini ilişkilendirin (resmi kanalda belgelendiği gibi), her şey beklendiği gibi geri dönecektir.

Şimdilik, tek ihtiyacım olan şey, onun dinamik niteliklerini almak ve şu an iyi çalışıyor, ama boş cevabı almak için yanlış bir şey yapmam gerektiğini biliyorum. Benim endişem şu an iyi çalışıyor olabilir, ama proje büyüdükçe muhtemelen daha büyük bir problemle karşılaşacağım ve bu sorunu çözmek için çok çalışacağım.

+1

Yani var_dump ($ post-> category) '? – alepeino

+0

Hayır, gerçekten dd ($ post-> category-> name); Bunun gibi beklenen şeyi aldım, bu da post'un kategori adı. –

cevap

0

İlişkisi yok çünkü onu yüklemediniz. Tek bildiği yabancı anahtar. Tüm bu bilgileri sizin için tuttuğunda çılgınca verimsiz olurdu çünkü her zaman buna gerek kalmadı. Tek bir modelin birçok ilişkiye sahip olabileceği örnekleri düşünün.

İlişkiye ihtiyacınız varsa, $post->category'u kullanabilirsiniz. İlişki henüz yüklenmediğinden, bunu yaptığınızda sizin için alacaktır.

Ya da aşağıdaki $post->load('category')'u kullanarak yüklemek isteyebilirsiniz, ancak bu, tek bir Post bu noktada çalıştığınız için gerçekten yarar sağlamaz. Post nesnelerinden oluşan bir koleksiyona sahipseniz, $posts->load('category')'u kullanmanın faydalarını görmeye başlayacaksınız, aksi takdirde n + 1 sorunla karşılaşırsınız.

Sonuç olarak, $post->load('category') ve var_dump($post) kullanırsanız, ilişkinin artık boş olmadığını görmelisiniz.

+0

Yani, temelde, bu türlerde olduğu gibi koleksiyonları ve sadece bazı özellikleri kullanmadığım zamanlarda modelleri ilişkilendirmek yerine yabancıları kurmak daha iyidir. Uygulamam çok sayfalı bir CMS, sanırım sadece bir yazı göstereceğim sayfalar var ve tüm mesajların listelendiği sayfalar kategorisi .. Peki ne yapmamı önerirsiniz? –

+0

Bu durumda, sadece yabancı anahtarı ayarlamak daha iyidir. Aksi takdirde, "Kategori" için öznitelikleri ayarlanmış, sorgula yeni bir "Post" modelini başlatmanız ve ardından "Kategori" nizi "Sonrası" ile ilişkilendirmeniz gerekir; bu, sonuçta gerektiğinden daha fazla soruna neden olur. – user3158900

+0

Awsome, teşekkürler! –

İlgili konular