如何在Laravel中获得模型关系?

时间:2020-01-15 14:35:54

标签: laravel laravel-5

我想获得数组中的模型关系;

我的模型如下:

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']; 这可能吗?

1 个答案:

答案 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%,但这可能是一个解决方案。