【发布时间】:2016-03-21 03:11:33
【问题描述】:
我尝试在用户和债券之间建立关系。一张债券总是包含两个用户(债务人、债权人)。
最后,如果我调用$bond->debtor 或$bond->creditor,我想获得一个用户模型
用户模型:
public function bonds()
{
return $this->hasMany(Bond::class);
}
债券模型:
protected $fillable = ['description', 'amount', 'debtor_id', 'creditor_id'];
public function debtor()
{
return $this->belongsToMany(User::class, 'bond_user', 'debtor_id', 'user_id');
}
public function creditor()
{
return $this->belongsToMany(User::class, 'bond_user', 'creditor_id', 'user_id');
}
还有两个迁移:
Schema::create('bonds', function (Blueprint $table) {
$table->increments('id');
$table->text('description');
$table->float('amount', 8, 2);
$table->integer('debtor_id');
$table->integer('creditor_id');
$table->timestamps();
});
Schema::create('bond_user', function (Blueprint $table) {
$table->increments('id');
$table->integer('user_id');
$table->integer('debtor_id');
$table->integer('creditor_id');
$table->timestamps();
});
每当我打电话时,例如。 $bond->debtor我得到一个整数而不是用户模型。
更新
我找到了解决办法:
用户模型:
public function bond_debtor()
{
return $this->hasMany(Bond::class, 'debtor_id');
}
public function bond_creditor()
{
return $this->hasMany(Bond::class, 'creditor_id');
}
债券模型:
public function debtor()
{
return $this->belongsTo(User::class, 'debtor_id');
}
public function creditor()
{
return $this->belongsTo(User::class, 'creditor_id');
}
【问题讨论】:
-
你试过用 $bond->debtor() 代替 $bond->debtor 感觉它们会产生不同的结果。
标签: laravel eloquent models relationships