gpt4 book ai didi

mysql - 特定模型的相关 Laravel 属性值

转载 作者:行者123 更新时间:2023-11-29 17:48:26 24 4
gpt4 key购买 nike

我对我的数据库模式有点困惑。我有主要实体的表格,例如“motors,motor_attributes”,属性保存在“attribute,attribute_options”中。属性可以是输入字段、选择、复选框等。

现在,我将电机的所有属性保存在 motor_attributes 中。该表的数据库结构是

Table: id, motor_id, attribute_id, attribute_value ...

现在一切正常。问题出现在列表页面上,我将只显示单个电机的两个属性。

第二个问题是属性值。对于选择,它保存 attribute_options 表的 ID,对于文本字段或日期类型,它保存字符串数据。

如何获取属性值。

电机模型内部的关系如下

/**********************************/ 
public function adAttributes() {
//dd('dd');
return $this->hasMany(MotorAttribute::class,'motor_id','id')
->orderBy('motor_id', 'asc');
}

我获取 20 个电机 + 2 个属性的查询就像

$motors = Motor::with([
'advertisementPhotos',
'customer.dealer',
'adAttributes' => function ($query) {
// $query->with('attribute');
// $query->with('attributeValue');
$query->limit(2);
//;
// $query->take(2);
}
])->where('featured', 1)->where('status', 1)
->where('date_expiry', '>=', date('Y-m-d') . ' 00:00:00')
->limit(20)->orderBy('position', 'asc');

问题是我无法对 adAttribute 进行限制,也无法获得确切的值。因为属性值可能是(输入字段,我无法建立关系)或者可能是选择字段(我可以与attribute_option建立关系)。也可能是日期字段(不能建立关系)。

数据库需要修改吗?

最佳答案

急切加载时无法使用LIMIT,必须删除->limit(2)

执行查询后必须限制属性的数量:

foreach($motors as $motor) {
$motor->adAttributes->take(2);
}

更新:我现在已经创建了一个用于急切加载的包,其限制为:https://github.com/staudenmeir/eloquent-eager-limit

关于mysql - 特定模型的相关 Laravel 属性值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49607795/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com