查询:
$posts = $this->post->with('games', 'console')->take($limit)->get();
所以实际上转储我在第4个条目上看到的$ post ...它返回NULL
["relations":protected]=>
array(2) {
["games"]=>
NULL
前3个返回值。但是接下来的第四个都是返回NULL。我再次在游戏桌中只有3个值
Games Table:
1 | game 1
2 | game 2
3 | game 3
实际上在第三个条目上,它的值为2但显示游戏3名称
posts table:
id | game id
1 | 3
2 | 2
3 | 3 (but showing "game 1" text)
4 | 3 (anything from 4 on returns NULL)
关系:
Game
public function Post()
{
return $this->hasMany('App\Post', 'game_id');
}
Post
public function console()
{
return $this->belongsTo('App\Console', 'id');
}
public function games()
{
return $this->belongsTo('App\Game', 'id');
}
Console
public function Post()
{
return $this->hasMany('App\Post', 'console_id');
}
答案 0 :(得分:0)
试试这个:
Post
public function games()
{
return $this->hasOne('App\Game', 'id', 'game_id');
}
答案 1 :(得分:0)
在您的Post
课程中,您使用的关系为games
错误。
首先,它应该被称为game
单数,因为Post
只属于一个Game
。但是,它可以复数形式。
然后,真正的问题是你宣布这样的关系:
public function games()
{
return $this->belongsTo('App\Game', 'id');
}
这告诉Laravel Post
与列id
的游戏相关,例如,记录:{id : 1, game_id : 3}
将与Game
相关联使用id
1,它应该与{3}的id {3}相关。Game
方法的第二个参数是本地列。第三个参数是父列上的belongsTo
。但默认情况下为id
,因此您不应使用其中任何一个。
id
public function games()
{
return $this->belongsTo('App\Game');
}
希望它有所帮助。