CakePHP 3 matching
Dość częstym przypadkiem zapytania jest znajdowanie rekordów „pasujących” do konkretnych powiązanych danych. Na przykład, jeśli masz relację Articles belongsToMany Tags, prawdopodobnie będziesz chciał znaleźć artykuły, które mają określony tag, a nie będziesz chciał "selectować" danych z powiązanego modelu. W CakePHP 3 można to zrobić w następujący sposób:
// In a controller or table method. $query = $articles->find(); $query->matching('Tags', function ($q) { return $q->where(['Tags.name' => 'nauka']); });
// In a controller or table method. $country = 'Japan'; $query = $users->find()->matching( 'Cities.Countries', function ($q) use ($country) { return $q->where(['Countries.name' => $country]); } );