使用“Lazy Eager Loading”返回关系中的第一个元素 [Laravel 5.2]

2024-03-31

我有这样的关系:

public function message()
{
   return $this->hasMany('Engine\Message');
}

在我的里面Conversation model.

对于每次对话,我都需要获取最后一条消息。

这是我尝试过的,但这只会在第一次对话中收到一条消息,但不会从其他对话中收到消息......

$con = Conversation::all();

$con->load(['message' => function ($q) use ( &$mess ) {
                $mess = $q->first();
            }]);

return $con;

我不想查询每条记录...有人知道如何解决这个问题吗?


按照建议here https://laracasts.com/discuss/channels/eloquent/first-and-take-do-not-work-correctly-in-eager-load-laravel?page=0!

不要使用first() or get()在急切加载中,您应该在模型中创建新的关系。

该模型看起来像这样......


public function message()
{
return $this->hasOne('Engine\Message');
}

向“pmall”致敬

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用“Lazy Eager Loading”返回关系中的第一个元素 [Laravel 5.2] 的相关文章

随机推荐