2014-09-03 2 views
0

Предположите, что модели A и B связаны друг с другом, используя отношения «Жестокие отношения».Проверка связей между связанными моделями?

Как проверить, имеет ли экземпляр из A связь с экземпляром из B?

Например, в A hasMany B и A belongsToMany B ситуациях я хочу проверить, имеет ли связь $a с $b.

Я думаю, что могу проверить это, обратившись к объекту связи $a->relatedBs(), но я не знаю как?

ответ

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 
Смежные вопросы