【发布时间】:2022-11-03 00:44:59
【问题描述】:
我是 Laravel 的新手,已经在寻找类似的线程,但我没有找到任何东西。 我想使用 Eloquent,我得到了 3 个模型和表格:测试系列、设备和用户。
用户与设备有多对多的关系。 (一个用户有很多设备,反之亦然) 设备与测试系列有一对多的关系。 (一个设备有许多测试系列,许多测试系列有一个设备)
** 表结构用户:**
id
username
表结构设备:
id
serial_number <-- its a string, not important for the structure
表结构测试系列:
id
device_id
设备和用户通过 Pivot 连接
设备用户:
id
user_id
device_id
如果用户登录,我想显示连接到用户的所有设备的所有测试系列。
我在用户模型中定义:
public function devices(): \Illuminate\Database\Eloquent\Relations\BelongsToMany {
return $this->belongsToMany(Device::class);
}
在设备模型中:
public function users(): \Illuminate\Database\Eloquent\Relations\BelongsToMany {
return $this->belongsToMany(User::class);
}
public function testseries(): \Illuminate\Database\Eloquent\Relations\HasMany {
return $this->hasMany(Testserie::class);
}
有什么方法可以在用户模型中创建可以轻松访问测试的功能?
如果有人不明白我想要什么,因为我的英语不好。这个函数应该告诉我在用户模型中想要什么:
public function testseries() {
return $this->devices()->testseries();
}
我还希望一次查询所有测试系列。
我尝试了每种方法。但它为每个设备做一个对测试的查询。
我也尝试了 with 方法。它可以工作,但是我想要 Testseries 表中的所有列,但是我必须告诉数组中的所有表名,并且我不想要 Devices 表中的列。
当我调用 ->get 方法时,我希望得到一个查询,我将通过一个查询一次获取所有 Testseries。
【问题讨论】:
标签: laravel database eloquent eloquent-relationship