【发布时间】:2017-02-25 23:56:28
【问题描述】:
我正在尝试使用 laravel 5.3 中的 hasMany 检索带有 cmets 的符号
Symbol.php
public function comments() {
return $this->hasMany('App\Comment');
}
Comment.php
public function symbol() {
return $this->belongsTo('App\Symbol');
}
当我跑步时:
$symbols = Symbol::with('comments')->paginate(100);
我得到正确的输出(列出所有符号及其 cmets)
@foreach ($symbols as $s)
{{ $s->name }}
@foreach ($s->comments as $c)
{{ $c->body }}
@endforeach
@endforeach
但是当我在语句中添加一个连接时:
$symbols = Symbol::with('comments')
->join('ranks', 'symbols.id', '=', 'ranks.symbol_id')
->join('prices', 'symbols.id', '=', 'prices.symbol_id')
->paginate(100);
foreach 循环没有每个符号的 cmets。知道为什么加入会导致这种情况吗?
【问题讨论】:
-
为什么不将它们也添加为关系?
-
“知道为什么加入会导致这种情况” - 我猜 Symbol 的
id被排名或价格的 id 覆盖。解决方案取决于您要执行的操作。 -
我认为这是错误的。当我添加一个仅包含 symbols.id 的选择时,它起作用了。谢谢