我想获得数组中的模型关系;
我的模型如下:
class User extends Model
{
public function profile() {
return $this->haOne(Profile::class);
}
public function settings() {
return $this->morphOne(Settings::class, 'settingsable');
}
public function addresses() {
return $this->hasMany(Addresses::class);
}
}
我的代码:
$user = User::with(['profile', 'settings', 'addresses'])->find(1);
$user->getRelations(); // return ['profile', 'settings', 'addresses'];
如果我的关系超过10,则我不想列出所有关系。
我想得到这样的:
$relations = ['profile', 'settings', 'addresses'];
这可能吗?
答案 0 :(得分:2)
您可以尝试将范围添加到模型,因此,只需编写一次即可。
class User extends Model
{
public function profile() {
return $this->haOne(Profile::class);
}
public function settings() {
return $this->morphOne(Settings::class, 'settingsable');
}
public function addresses() {
return $this->hasMany(Addresses::class);
}
public function scopeWithRelations(Builder $query){
return $query->with([...]);
}
}
$users = User::withRelations()->get();
这样,您只需要在其中编写一次,并且在代码的任何地方都可以使用范围。
并非完全是您要问的100%,但这可能是一个解决方案。