我有4张桌子:
Account (id, name)
Type (id, account_id, name)
Category (id, type_id, name)
Money (id, category_id, date, amount)
我在模型中定义了关系
但我的问题是如何获得帐号为2的资金数据?
Account::find(2)-> type()-> category()->money
不工作
答案 0 :(得分:2)
假设您创建了关系,您可以这样做:
$account = Account::with('type.category.money')->find(2);
并显示您现在可以使用的资金:
echo $account->type->category->money->amount;
在上面echo
我当然假设每条记录都有所有这些表中的数据。如果没有,您需要添加额外的检查,以确保您不显示null
的属性
答案 1 :(得分:1)
如果您只需要'money'的最终结果并在模型上设置反向关系,您也可以从另一个方向进行此操作。
$money = Money::whereHas('category.type.account', function ($q) use ($id) {
$q->where('id', $id);
})->get();
// get() or first() depending whether these relationships return many
Laravel Docs - Eloquent Relationships - Querying Relationships - Querying Relationship Existence