Laravel大父母雄辩关系的条件

时间:2015-12-31 17:31:56

标签: laravel eloquent relationship

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

不工作

2 个答案:

答案 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