Laravel 不使用标准';用户id';列名
我有两个表,一个表有不同的列,根据授权级别记录不同的用户名。但我想把这两个链接在一起。目前,我尝试了以下方法: User.phpLaravel 不使用标准';用户id';列名,laravel,eloquent,Laravel,Eloquent,我有两个表,一个表有不同的列,根据授权级别记录不同的用户名。但我想把这两个链接在一起。目前,我尝试了以下方法: User.php public function approvals() { return $this->hasMany(Approval::class); } Approval.php public function qs() { return $this->belongsTo(User::class, 'id', 'q
public function approvals()
{
return $this->hasMany(Approval::class);
}
Approval.php
public function qs() {
return $this->belongsTo(User::class, 'id', 'qs');
}
index.blade.php
<td>{{ $approval->qs->name }}</td>
用户数据库结构
Schema::create('users', function (Blueprint $table) {
$table->bigIncrements('id');
$table->string('name');
$table->string('email', 100)->unique();
$table->timestamp('email_verified_at')->nullable();
$table->string('password');
$table->rememberToken();
$table->timestamps();
});
我是否完全错了,qs表格列需要链接到users.id?如果父模型不使用id作为主键,或者您希望将子模型连接到其他列,您可以将第三个参数传递给
belongsTo
方法:
public function qs() {
return $this->belongsTo(User::class, 'foreign_key_here_from_child_table', 'custom_column_from_parent_table');
}
似乎
qs
是user
模型的用户id。因此,与批准模型的关系为
public function qs()
{
return $this->belongsTo(User::class, 'qs');
}
在用户
模型中
public function approvals()
{
return $this->hasMany(Approval::class, 'qs');
}
现在你可以使用
{{ $approval->qs->name }}
Eloquent通过检查relationship方法的名称并在方法名称后面加上一个u,后跟主键列的名称来确定默认外键名称。但是,如果模型上的外键不是parent_id,则可以将自定义键名称作为第二个参数传递给belongsTo方法
您试图将用户与批准链接的外键是什么?请提供您的数据库结构。@zlatan我已经更新了此表结构。SSO用户应该链接到批准?我可以理解此操作的逻辑,但不理解为什么我仍然收到“试图获取非对象的属性‘名称’”错误。您是否按照我的回答建立了关系??还有一件事要做,就是尝试更改关系名称。
{{ $approval->qs->name }}