Ich arbeite an CakePHP 3.2.CakePHP: Abfrage der gleichen Werte zweimal
ich categories
haben, products
, seller_products
Tisch und ihre Vereinigung sind
categories->hasMany('Products');
seller_products->hasMany('Products');
ich alle Produkte Gruppe nach Kategorie abrufen, wo seller_products.stock> 0
Das ist, was ich tue
$pros1 = $this->Products->Categories->find()
->where([
'Categories.status' => 0,
])
->contain([
'Products.SellerProducts', 'Subcategories', 'Subcategories.ProductTypes'
])
->matching('Products.SellerProducts', function(\Cake\ORM\Query $q) {
return $q->where(['SellerProducts.stock >' => 0]);
});
aber beim Debuggen gibt es die gleichen Werte zweimal zurück. foreach($pros1 as $p){debug($p);}
gleiche Werte zweimal
/src/Controller/PagesController.php (line 120)
object(App\Model\Entity\Category) {
'id' => (int) 1,
'title' => 'Electronics',
'description' => '',
'icon' => 'fa-television',
'status' => (int) 0,
'created' => object(Cake\I18n\Time) {
.........
}
/src/Controller/PagesController.php (line 120)
object(App\Model\Entity\Category) {
'id' => (int) 1,
'title' => 'Electronics',
'description' => '',
'icon' => 'fa-television',
'status' => (int) 0,
'created' => object(Cake\I18n\Time) {
.........
}
drucken
und debug(count($pros1))
Druck 1
danke ndm. aber das Anpassen funktioniert nicht. Es zeigt immernoch Produkte mit 'SellerProducts.stock = 0' –
@AnujTBE Das ist eine andere Frage. So funktioniert das nicht. Matching filtert die übergeordneten Datensätze, wenn Sie untergeordnete Datensätze ("SellerProducts") enthalten und nur bestimmte Datensätze wünschen, müssen Sie diese ebenfalls filtern. Siehe ** http: //stackoverflow.com/a/26800203/1392379** – ndm