在laravel中按模型从数据库中获取数据时如何附加关系

Posted

技术标签:

【中文标题】在laravel中按模型从数据库中获取数据时如何附加关系【英文标题】:how attach the relationship when getting data from database by model in laravel 【发布时间】:2021-09-21 21:10:49 【问题描述】:

我想在 laravel 中按模型从数据库中获取数据时附加关系。 我使用这些代码来做到这一点。 但我知道有更好的方法来做到这一点。

感谢您的帮助。

$courses = Cource::orderBy('id' , 'desc')->take($count)->get();
 foreach($courses as $cource)
        $cource['image'] =  $cource->image()->get();
        $cource['rate'] = $cource->rate()->get();

【问题讨论】:

docs 可能是寻找此类问题的第一个地方。 Laravel 有 ton 的内置功能。因此,如果您认为应该有更好的方法来完成某事,请首先查看文档;可能已经有一种内置方式(例如急切加载)。 感谢您的指导。我阅读了文档,并且我了解 with () 不适用于 morph 关系 【参考方案1】:

您可能想使用with

$courses = Cource::orderBy('id' , 'desc')
    ->take($count)
    ->with(['image', 'rate'])
    ->get();

【讨论】:

我忘了说我稍后使用它但不工作并给我空数组。 give me the empty array 这种情况何时发生?当你序列化它们时?当您尝试访问它们时?还是什么?.. 我认为这不起作用,因为我使用了变形关系,我想用 with( ) 来做这个。 在模型类上尝试protected $with = ['image', 'rate'];【参考方案2】:
$courses = Cource::orderBy('id' , 'desc')
->take($count)
->with(['image', 'rate'])
->get();

条件是使用除morph relationship之外的所有关系

【讨论】:

以上是关于在laravel中按模型从数据库中获取数据时如何附加关系的主要内容,如果未能解决你的问题,请参考以下文章

排除Laravel会从模型结果中追加值

使用 laravel 模型获取数据时没有从表中获取结果

Laravel + Vue JS:从数据库中获取/存储 Eloquent 模型的值

我如何从表 laravel 模型中获取数据

在 laravel 中按日期获取数据

Laravel 雄辩模型如何从关系表中获取数据