Laravel 关于父系雄辩关系的条件
我有4张桌子:Laravel 关于父系雄辩关系的条件,laravel,eloquent,relationship,Laravel,Eloquent,Relationship,我有4张桌子: Account (id, name) Type (id, account_id, name) Category (id, type_id, name) Money (id, category_id, date, amount) 我在模型中定义了关系 但我的问题是如何获得帐户id为2的货币数据 Account::find(2)-> type()-> category()->money 不起作用假设您创建了关系,您可以这样做: $account = Acc
Account (id, name)
Type (id, account_id, name)
Category (id, type_id, name)
Money (id, category_id, date, amount)
我在模型中定义了关系
但我的问题是如何获得帐户id为2的货币数据
Account::find(2)-> type()-> category()->money
不起作用假设您创建了关系,您可以这样做:
$account = Account::with('type.category.money')->find(2);
要显示您现在可以使用的货币:
echo $account->type->category->money->amount;
在上面的
echo
I中,我当然假设每个记录的所有表中都有数据。如果没有,则需要添加额外的检查,以确保不显示null
的属性。假设您创建了关系,可以通过以下方式执行此操作:
$account = Account::with('type.category.money')->find(2);
要显示您现在可以使用的货币:
echo $account->type->category->money->amount;
在上面的
echo
I中,我当然假设每个记录的所有表中都有数据。如果没有,您需要添加额外的检查,以确保不显示null的属性如果您只需要“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
如果您只需要“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