Laravel 关于父系雄辩关系的条件

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

我有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 = 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