我在数据库中有3个表
{'id','bill_id','remark'}
{'id','third_party','amount'}
{'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
这是我正在使用的查询
Transaction::with('Bills.third_party')->get();
我已经将问题(third_party_name)改成了我在这里写的company_name列名,这是我的旧联接查询名,在屏幕截图中可以看到,基本上我正在尝试获取公司名。
答案 0 :(得分:0)
您可以显示所有代码吗?如何将company_name设置为third_party_name?
通过坚持laravel的“约定”或“建议的命名”,您也可能会获得很多好处,这将为您免费提供许多功能,并使您的代码更易于阅读,编写和调试。
例如您的关系方法名称(Bills(),third_party()),但更重要的是,如果您以“ laravel方式”命名表字段,您将变得更加轻松有效,因为无需定义外键等。 / p>
我将通过以下方式进行设置:
第三方{'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);
}
}
您还应该定义逆关系。
查看完整的代码以查看问题所在是非常有益的。