我有3个一对一关系的表。phone表与Model表具有一对一关系,Model表与Manufacturer表具有一对一关系。
phone_table
id
imei
image
model_id
model_table
id
name
image
manufracturer_id
manufracturer_table
id
name
logo如何获得这样的结果:-
App\Phone{
imei : "356554512522148",
model : "Galaxy S-10",
manufracturer : "Samsung",
}发布于 2019-11-29 16:47:31
我永远不会把它抛到同一个数组/对象中,我会首先在转换时这样做。如果您使用默认的Laravel转换,则可以对其使用getter。关于如何将这些字段访问到同一上下文中的简单示例如下。
$phone = Phone::with('model.manufactor')->find(1);有了secures,查询对于访问它是最好的。如何将数据放入同一层。
[
'imei' => $phone->imei,
'model' => $phone->model->name,
'manufactor' => $phone->model->manufactor->name,
]要实现这一点,您还需要在模型中使用关系。
Phone.php
public function model()
{
return $this->belongsTo(Model::class);
}Model.php
public function manufactor()
{
return $this->belongsTo(Manufactor::class);
}发布于 2019-11-29 16:47:11
加入他们吧:
\App\Phone::leftjoin('model_table AS mo', 'mo.id', '=','phone_table.model_id')
->leftjoin('manufracturer_table AS ma', 'ma.id', '='. 'mo.manufracturer_id')
->selectRaw('phone_table.imei, mo.name AS model, ma.name AS manufracturer')
->first()有时,您需要考虑为什么要将表拆分为一对一关系。
是否存在通常不使用的表,或者其中一个表需要由另一个表连接。这仅仅是为了节省空间还是降低IO成本。
如果没有任何其他原因,您总是需要获取这些表的信息,也许您可以合并为一个表。
https://stackoverflow.com/questions/59101370
复制相似问题