返回第一元件从与`懒惰伊格Loading` [Laravel 5.2]关系

问题描述 投票:0回答:3

我有这样的关系:

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

在我的Conversation模型。

并为每个谈话,我需要得到最后的消息。

以下是我试过了,但是这将只能得到一个消息第一次谈话,但不会从其他的谈话得到的消息...

$con = Conversation::all();

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

return $con;

我不瓦纳查询每个记录...任何人都知道如何解决这个问题?

laravel eloquent laravel-5.2 eager-loading
3个回答
0
投票

尝试

$con = Conversation::all();
$con->load(['message' => function ($q) use ( &$mess ) {
                $q->orderBy('created_at', 'desc')->take(1);
                // or if you don't use timestamps
                // $q->orderBy('id', 'desc')->take(1)
            }]);
return $con;

0
投票

作为建议here

不要使用first()get()在渴望负荷应创建模型的新关系。

该模型会是这个样子?

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

荣誉给“PMALL”


0
投票
  1. 使用的API资源 - > https://laravel.com/docs/5.8/eloquent-resources
  2. 定义存取器 - > https://laravel.com/docs/5.8/eloquent-mutators
  3. 获取该查询的最新或任何ü要查询的访问器
© www.soinside.com 2019 - 2024. All rights reserved.