Laravel雄辩的关系获取第三张表/关系值

时间:2019-03-16 10:59:18

标签: php laravel eloquent eloquent--relationship laravel-5.8

我在数据库中有3个表

  1. 交易{'id','bill_id','remark'}
  2. 账单{'id','third_party','amount'}
  3. 第三方{'id','company_name',remark}

“交易” 表的bill_id列来自“ Bills” ,而Bills表的'third_party'列与ThirdParty表相连< strong>列->'id'

所以我在这里尝试使用laravel雄辩的关系来获取company_name

我的交易模型:

public function Bills()
{
    return $this->hasOne('App\Bills','id','bill_id');
}

账单:

public function third_party()
{
    return $this->belongsTo('App\ThirdParty','third_party','id');
} 

我获得company_name

enter image description here

这是我正在使用的查询

Transaction::with('Bills.third_party')->get();

我已经将问题(third_party_name)改成了我在这里写的company_name列名,这是我的旧联接查询名,在屏幕截图中可以看到,基本上我正在尝试获取公司名。

1 个答案:

答案 0 :(得分:0)

您可以显示所有代码吗?如何将company_name设置为third_party_name?

通过坚持laravel的“约定”或“建议的命名”,您也可能会获得很多好处,这将为您免费提供许多功能,并使您的代码更易于阅读,编写和调试。

例如您的关系方法名称(Bills(),third_party()),但更重要的是,如果您以“ laravel方式”命名表字段,您将变得更加轻松有效,因为无需定义外键等。 / p>

我将通过以下方式进行设置:

  1. 交易{'id','bill_id','remark'}
  2. 帐单{'id','third_party_id','amount'} <-请注意third_party_id
  3. 第三方{'id','company_name',remark}

    class Transaction extends Model
    {
        public function Bills()
        {
            return $this->hasOne('App\Bills');
        }
    }
    
    class Bills extends Model
    {
        public function ThirdParty()
        {
            return $this->belongsTo('App\ThirdParty);
        }
    }
    

您还应该定义逆关系。

查看完整的代码以查看问题所在是非常有益的。