检查相关模型之间的关系?

时间:2014-09-03 11:47:04

标签: php laravel eloquent relationship

假设AB模型使用Eloquent关系彼此相关。

如何检查A中的实例是否与B中的实例有关系?

例如,在A hasMany BA belongsToMany B情况下,我想检查$a是否与$b有关系。

我想我可以通过访问关系对象$a->relatedBs()来检查这个,但我不知道怎么做?

2 个答案:

答案 0 :(得分:1)

这个框架确实存在PR:https://github.com/laravel/framework/pull/4267

$b = B::find($id);

$as = A::hasIn('relationB', $b)->get();

但泰勒没有合并它,所以你需要whereHas

// to get all As related to B with some value
$as = A::whereHas('relationB', function ($q) use ($someValue) {
   $q->where('someColumn', $someValue);
})->get();

// to check if $a is related to $b
$a->relationB()->where('b_table.id', $b->getKey())->first(); // model if found or null

// or for other tha m-m relations:
$a->relationB()->find($b->getKey()); // same as above

// or something more verbose:
$a->relationB()->where('b_table.id', $b->getKey())->exists(); // bool

答案 1 :(得分:0)

A::has('B')->get();

如laravel文档中所示:http://laravel.com/docs/eloquent#querying-relations