【问题标题】:Get relationship if the row exists如果行存在则获取关系
【发布时间】:2023-03-31 08:10:02
【问题描述】:

我有两个表,usersroles,其中每个 user 可以(但不是必须)有一个 role。该关系分别通过两个表中的role_idid 存在。

我如何创建一个 Eloquent 查询来获取用户的 role如果该行存在

这是我当前的查询(虽然它没有做我需要的):

$user = User::where('username', 'LIKE', '%abc%')
    ->get();

【问题讨论】:

  • 尝试添加->with('role') - 我不记得它是否添加了一些东西,不管它是否存在。

标签: php laravel laravel-4 laravel-5 eloquent


【解决方案1】:

首先,你需要在你的用户模型中定义一个user->role关系:

public function role() {
  return $this->belongsTo(Role::class);
}

然后您就可以加载用户及其角色:

$users = User::with('role')->where('username', 'LIKE', '%abc%')->get();

获取的用户应该有他们的角色

$user->role

如果他们没有角色,则该属性的值为NULL

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-17
    • 1970-01-01
    • 2020-12-25
    • 2023-03-03
    • 1970-01-01
    相关资源
    最近更新 更多