从父关系派生的键值对对象访问项目
Accessing an item from a key value pair object derived from a parent relationship
我正在尝试在我的用户 table 中实现一个 created_by 列。
我创建了一个迁移文件以将新列添加到用户的 table:
public function up()
{
Schema::table('users', function (Blueprint $table) {
$table->unsignedInteger('created_by')->default(0);
});
}
我有一个具有以下关系的用户模型:
public function roles()
{
return $this->belongsToMany(Role::class);
}
public function createdBy()
{
return $this->belongsTo(self::class, 'created_by');
}
在 UsersController 中,我有这个方法:
public function view($id)
{
$user = User::with(['roles', 'createdBy'])->where('created_by', Auth::id())->find($id);
return $user;
}
当我 return 用户变量时,我得到这个结果:
现在,我想访问“created_by”中“email”的值。我尝试这样做:
return $user->created_by
我得到的是 2,但我想要得到的是“biodunna@mailnator.com”。
我也试过 return $user->created_by->email
但它 return 出错了,因为我从 return $user->created_by
得到的结果只是一个数字。
我想获取电子邮件值“biodunna@mailnator.com”。
根据您的 JSON 回复,这应该有效:
$user[0]->created_by->email
请将 createdBy
关系函数更改为 createdByUser
。
这里我们只是更改了函数名,以避免列名和关系名冲突。
public function createdByUser()
{
return $this->belongsTo(self::class, 'created_by');
}
所以现在,您可以访问
$user->createdByUser->email
我正在尝试在我的用户 table 中实现一个 created_by 列。
我创建了一个迁移文件以将新列添加到用户的 table:
public function up()
{
Schema::table('users', function (Blueprint $table) {
$table->unsignedInteger('created_by')->default(0);
});
}
我有一个具有以下关系的用户模型:
public function roles()
{
return $this->belongsToMany(Role::class);
}
public function createdBy()
{
return $this->belongsTo(self::class, 'created_by');
}
在 UsersController 中,我有这个方法:
public function view($id)
{
$user = User::with(['roles', 'createdBy'])->where('created_by', Auth::id())->find($id);
return $user;
}
当我 return 用户变量时,我得到这个结果:
现在,我想访问“created_by”中“email”的值。我尝试这样做:
return $user->created_by
我得到的是 2,但我想要得到的是“biodunna@mailnator.com”。
我也试过 return $user->created_by->email
但它 return 出错了,因为我从 return $user->created_by
得到的结果只是一个数字。
我想获取电子邮件值“biodunna@mailnator.com”。
根据您的 JSON 回复,这应该有效:
$user[0]->created_by->email
请将 createdBy
关系函数更改为 createdByUser
。
这里我们只是更改了函数名,以避免列名和关系名冲突。
public function createdByUser()
{
return $this->belongsTo(self::class, 'created_by');
}
所以现在,您可以访问
$user->createdByUser->email