【发布时间】:2016-09-10 15:38:54
【问题描述】:
回答有cmets,cmets有投票。
回答得票。
votes table:
id user_id vote votable_id votable_type
1 1 5 1 Comment
2 1 6 1 Post
...
后模型:
public function comments()
{
return $this->hasMany('App\Comment','post_id','id');
}
public function votes()
{
return $this->morphMany('App\Vote', 'votable');
}
评论模型:
public function votes()
{
return $this->morphMany('App\Vote', 'votable');
}
public function post()
{
return $this->belongsTo('App\Post','post_id','id');
}
投票模式:
public function votable()
{
return $this->morphTo();
}
我获得了所有帖子和他们的 cmets,但没有获得帖子和 cmets 的投票。
$posts=Post::all();
foreach($posts as $post)
{
echo "<pre>"; print_r($post->post);
foreach($post->comments as $comment)
{
echo "<pre>"; print_r($comment->comment_body);
foreach($comment->votes as $vote)
{
echo "<pre>"; print_r($vote->vote);
}
}
foreach($post->votes as $vote)
{
echo "<pre>"; print_r($vote->vote);
}
}
print_r($post->votes); 和 print_r($comment->votes); 与投票没有任何关系。
【问题讨论】:
-
dd($post->votes)或dd($comment->votes)给你什么?另外,能否发一张投票表的截图? -
@prateekkathal 我没有任何投票关系。
-
你使用的是 Laravel 5.2 吗?
-
由于您刚刚编辑了您的帖子并确认您使用的是 Laravel 5.2,我认为
votable_type应该是 App\Comment 或 App\Post 而不仅仅是 Comment 或 Post。请通过更改某些可投票字段中的行来确认,如果您得到预期的输出,请告诉我。 :) -
@prateekkathal 条目是正确的。类型列需要模型类名。 laravel.com/docs/5.3/…
标签: laravel laravel-5.2