php - Laravel - 如何获取单个模型实例而不是集合,而是从 belongsToMany 获取单个模型
问题描述
我在我的一个模型中定义了这种关系。这是最简单的情况。
use \App\Models\Related;
public function entities()
{
return $this
->belongsToMany(Entity::class, 'entity_related', 'related_id', 'entity_id');
}
现在,我想创建一个仅从表中获取一个模型的关系。
当前解决方案
我刚刚定义了相同的关系,但使用->take(1)
. 粗鲁,但它有效。这个解决方案的缺点是我需要做一个foreach
循环来获得我想要的单个模型。
use \App\Models\Entity;
public function firstOfEntities()
{
return $this
->belongsToMany(Entity::class, 'entity_related', 'related_id', 'entity_id')
->take(1); // <---
}
去做
如何正确定义只获取一个(只是任何)模型实例的关系,而不是创建一个集合?
所需用途
完成上述操作后,我希望能够在foreach
循环内的模板文件中使用单个模型:
@foreach($object as $o)
<h2>{{ $o->singleEntity->name }}</h2>
<p>{{ $o->singleEntity->description}}</p>
@endforeach
解决方案
您可以定义一个访问器来获取您的第一个元素:
/** MyModel.php */
use \App\Models\Entity;
// Your current relationship
public function entities()
{
return $this
->belongsToMany(Entity::class, 'entity_related', 'related_id', 'entity_id');
}
// the accessor
public function getFirstEntityAttribute()
{
return $this->entities()->first();
}
然后在你的控制器中:
/** MyModelController.php */
$model = MyModel::find(1);
$entity = $model->first_entity;
检查与此主题相关的文档。
推荐阅读
- java - 如何在iText 7 PDF中将一些文本垂直居中在图像旁边
- ios - IONIC 3 IOS:在运行 iOS 13.5.1 的 iPad 上查看应用程序中的错误
- r - 在R中查找数据点的某个半径内的点数
- python - 试图获取quickdraw绘图组中每个绘图的关键ID
- database - mongodb 中多个字段的 $unset
- sql - 检查现有行时提高插入性能
- three.js - Three.js 使用四元数围绕 xyz 世界轴旋转对象
- python - 如何绘制 MultiIndex Xarray?
- python - 使用 Python 中具有不同标签的子项解析 XML
- javascript - 如何为椭圆形周围的文本设置动画?