1

我在数据库中有 3 个表

  1. 交易{'id','bill_id','remark'}
  2. 票据{'id','third_party','amount'}
  3. 第三者{'id','company_name',remark}

'transaction'表的列来自bill_id' Bills'并且 Bills 表的'third_party'列连接到 ThirdParty 表列 -> 'id'

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

我的交易模型:

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

在此处输入图像描述

这是我正在使用的查询

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

而且我已将问题(third_party_name)更正为company_name 列名我在这里写的是我的旧连接查询名称,它在屏幕截图中可见,基本上我正在尝试获取公司名称。

4

1 回答 1

0

你能展示你所有的代码吗?company_name 如何设置为third_party_name?

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

例如。您的关系方法名称(Bills()、third_party()),但更重要的是,如果您以“laravel 方式”命名您的表字段,您将获得更轻松的关系,因为不需要定义外键等。

我会设置这个类似于:

  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);
        }
    }
    

您还应该定义反向关系。

查看完整代码以了解问题所在将非常有益。

于 2019-03-16T11:24:39.827 回答