如何从MySQL中的多表关系中检索数据

时间:2018-12-05 10:13:47

标签: php mysql laravel laravel-5.5

我正在使用PHP Laravel 5.5开发项目。我有表tbl_borrower,tbl_property_owner,tbl_property,tbl_property_borrower。表的结构是这样的。 tbl_property_owner has one or many properties and property are assigned to the borrower in tbl_property_borrower. The borrower can also have many properties. 在报告中,我必须显示借款人详细信息,财产所有者详细信息,已分配的财产详细信息。报告应该是这样的。 In report, there should be borrower details and property details and assigned property details are shown on the basis of 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');
}

像这样,我可以检索财产所有人的财产详细信息,但是我无法  获取根据财产所有者分配给借款人的值。 预先感谢。

2 个答案:

答案 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)
  1. 不同的外键名称。

    示例:

    考虑您有用户表,还有另一个表,例如注释表。

  Users Table fields = id, name
     Comments Table     = id, comments, author_id.

这里的外键与表名相比有所不同,因此您必须在关系函数中告诉该键。

return $this->hasOne('App\Comment', 'author_id', 'id');

希望这会有所帮助。