2016-09-17 9 views
1

polymorphic relationsを使用してコメントシステムを構築していましたが、問題なく動作しているようです。ここでenter image description hereElequent Polymorphic Relationshipでデータを取得できません

はここ

<?php 
namespace App; 
use Illuminate\Database\Eloquent\Model; 

class Posts extends Model 
{ 
    public $primaryKey = 'pid'; 
    public $timestamps = false; 

    public function author() 
    { 
     return $this->belongsTo('App\User', 'p_author_id'); 
    } 

    public function comments() 
    { 
     return $this->morphMany('App\Comment', 'commentable'); 
    } 

} 

は、私のコメントモデル

<?php 

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

class Comment extends Model 
{ 
    public function commentable() 
    { 
     return $this->morphTo(); 
    } 

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

    public function posts() 
    { 
     return $this->belongsTo('App\Posts', 'pid'); 
    } 

} 

今問題がある、

$pin = Posts::find($pin_id); 

に関連した任意のコメントを返していないで、私の記事のモデルであります役職!著者エンティティはありますが、コメントはありません。

print_r($pin->toArray()); 

Array 
(
    [pid] => 17 
    [p_title] => Hello World? 
    [p_content] => How are you earth? 
    [p_author_id] => 4 
    [p_created_at] => 2016-09-15 17:18:16 
    [p_updated_at] => 2016-09-15 17:18:16 
    [comments_count] => 0 
    [votes] => 0 
    [author] => Array 
     (
      [id] => 4 
      [name] => Human 
      [email] => [email protected] 
      [created_at] => 2016-09-15 17:18:00 
      [updated_at] => 2016-09-15 17:20:05 
     ) 

) 

なぜコメントエンティティは、ここで次の配列不足している

だけを返すでしょうか?

$pin = Posts::with('comments')->find($pin_id); 

し、代わりに、データベース内の自分のcommentable_type欄の投稿のApp \投稿を使用:ありがとう:)

答えて

2

は、次のように​​を試してみてください。 ORMはcommentable関係にアクセスしたときに返すためにモデルを所有しているのどの「タイプ」を決定する方法を

commentable_type列がある(laravel documentationから引用):からです。

また、naming convention for modelsに従ってください。

+0

返信いただきありがとうございます。それでもnullを返します。'print_r($ pin-> replies-> toArray())は空の配列' – rakibtg

+0

dd($ pin)を試して、 'comments'属性が表示されているかどうかを確認します。 –

+0

私はすべてを一からやり直し、コメントエンティティの名前をプロジェクトの返信に変更しましたが、すべてが同じままです。 'dd($ pin)'では、「返信」という別名のコメント属性が空であることが示されています[http://i.imgur.com/K8iMJkT.png](http://i.imgur.com/K8iMJkT)。 png) – rakibtg

関連する問題