我正在使用PHP Laravel 5.5开发项目。我有表tbl_borrower,tbl_property_owner,tbl_property,tbl_property_borrower。表的结构是这样的。 在报告中,我必须显示借款人详细信息,财产所有者详细信息,已分配的财产详细信息。报告应该是这样的。 我试图在这样的模型中建立一对多的关系。
public function properties()
{
return $this->hasMany('App\Property','property_owner_id');
}
public function assigned_property()
{
return $this->hasMany('App\PropertyBorrower','property_id');
}
像这样,我可以检索财产所有人的财产详细信息,但是我无法 获取根据财产所有者分配给借款人的值。 预先感谢。
答案 0 :(得分:0)
尝试如下
use App\Property;
use App\PropertyBorrower;
public function properties()
{
return $this->hasMany(Property::class, 'property_owner_id', 'id');
}
public function assigned_property()
{
return $this->hasMany(PropertyBorrower::class, 'property_id', 'id');
}
在您的借款人模型中
public function borrower()
{
return $this->belongsTo(PropertyBorrower::class, 'id', 'borrower_id');
}
答案 1 :(得分:0)
关系中有两种情况。 1.基于正确的命名转换,仅给出模型名称。
Example :
consider you have users table and you have another table like comments table.
Users Table fields = id, name
Comments Table = id, comments, user_id.
这里您遵循了正确的命名转换,例如user_id,因此您只需要提供如下的模型名称,
return $this->hasOne('App\Comment'); or return $this->hasOne(Comment::class)
不同的外键名称。
示例:
考虑您有用户表,还有另一个表,例如注释表。
Users Table fields = id, name Comments Table = id, comments, author_id.
这里的外键与表名相比有所不同,因此您必须在关系函数中告诉该键。
return $this->hasOne('App\Comment', 'author_id', 'id');
希望这会有所帮助。