2016-06-04 3 views
0

Ich habe eine Abfrage mit zugeordneten Daten. Es funktioniert und zeigt alle Daten an (siehe unten).Anzeige komplexe Ergebnisse in einem CakePHP3 Debug

Meine Debug-Ausgabe enthält eine Menge zusätzlicher Felder in [] Klammern. Wie kann ich das auf die erforderlichen Daten beschränken und keine zusätzlichen Felder in [] Klammern anzeigen?

Auch dies ist der optimale Weg, um solche Daten in CakePHP3 zu bekommen? wie ich CakePHP2 gewohnt bin. Es gibt viel weniger Code in CakePHP3 für einen Fund über viele Tische, aber ich habe die CakePHP2 Parameter bevorzugt. Ich bin es gewohnt, Joins für die Suche und Bedingungen für die wo, aber cakephp3 benötigt nicht den Join-Code in der Suche verwenden.

$query3 = $this->Bookmarks->find() 
      ->contain(['Users']) 
      ->select(['bookmarks.id','bookmarks.title','users.id'])  
      ->where(['bookmarks.id' => 1]) ;  

     $query3->matching('Tags', function ($q) { 

      return $q 
       ->select(['tags.id']) 
       ->where(['Tags.title like' => '%tes%']); 
      }); 


      foreach ($query3 as $row) { 
        debug($row); 
       } 

//bookmarks model 
public function initialize(array $config) 
    { 
     parent::initialize($config); 

     $this->table('bookmarks'); 


     $this->belongsTo('Users', [ 
      'foreignKey' => 'user_id', 
      'joinType' => 'INNER' 
     ]); 
     $this->belongsToMany('Tags', [ 
      'foreignKey' => 'bookmark_id', 
      'targetForeignKey' => 'tag_id', 
      'joinTable' => 'bookmarks_tags' 
     ]); 
    } 


'bookmarks' => [ 
    'id' => '1', 
    'title' => 'kmkl' 
], 
'users' => [ 
    'id' => '1' 
], 
'tags' => [ 
    'id' => '1' 
], 
'[new]' => false, 
'[accessible]' => [ 
    '*' => true 
], 
'[dirty]' => [], 
'[original]' => [], 
'[virtual]' => [], 
'[errors]' => [], 
'[invalid]' => [], 
'[repository]' => 'Bookmarks' 

http://book.cakephp.org/3.0/en/orm/query-builder.html

+1

versuchen Sie '' '$ query3-> toArray();' '' und dann loop/debug Ergebnisse. – Salines

Antwort

2

Um nur ein Array aus einem Query-Objekt zu erhalten, verwenden toArray

ändern

$query3 = $this->Bookmarks->find() 
      ->contain(['Users']) 
      ->select(['bookmarks.id','bookmarks.title','users.id'])  
      ->where(['bookmarks.id' => 1]); 

TO

$query3 = $this->Bookmarks->find() 
      ->contain(['Users']) 
      ->select(['bookmarks.id','bookmarks.title','users.id'])  
      ->where(['bookmarks.id' => 1]) 
      ->toArray(); // <--