2017-01-06 43 views
0

2つのテーブル 'sanpham'と 'danhmuc'があります。私は2つのテーブルからデータを取得するためにphalconクエリビルダーを使用します。Phalconクエリビルダが結合テーブルのデータを取得できません

$laytin = $this->modelsManager->createBuilder() 
     ->from("sanpham") 
     ->innerJoin('danhmuc','sanpham.danhmuc=danhmuc.sodanhmuc') 
     ->where('sanpham.sosanpham = '.$id.'') 
     ->getQuery() 
     ->getSingleResult(); 
     $breadcrumbs = array('/' => Tool::getTranslation()->_('trangchu'),"/Loai-san-pham/".$laytin->tendep."/".$laytin->sodanhmuc => $laytin->tendanhmuc,'' => $laytin->tieudesanpham); 

クエリが実行されますが、 'danhmuc' テーブルで$ laytin-> tendep、$ laytin-> sodanhmuc、$ laytin-> tendanhmucは表示されません。 'sanpham'テーブルのすべての列($ laytin-> tieudesanphamなど)が正しく表示されます。

+0

'$ this-> modelsManager-> createBuilder() - > columns( 'danhmuc.tendep、danhmuc.sodanhmuc')'のようにしてください。 docs:https://docs.phalconphp.com/en/3.0.2/api/Phalcon_Mvc_Model_Query_Builder.html – Timothy

+0

ありがとうございます。できます !!! しかし、私は手動で 'sanpham'にすべての列を入力する必要があります(例:columns( 'danhmuc.tend ep、danhmuc.sodanhmuc、sanpham.tieudesanpham ..'))。なぜPhalconは建築業者をより簡単にしませんか? – chipheo83

+0

' - > columns( '*') 'を試してください。 – Juri

答えて

0

あなたはで特定の列を追加することができます:あなたがあなたの出力にしたい各列を追加する必要がありますこの方法で

$this->modelsManager->createBuilder()->columns('danhmuc.tend‌​ep, danhmuc.sodanhmuc') 

QueryBuilder docs。 もう1つの方法はSanphamモデルを照会することです。例えば

class Sanpham extends \Phalcon\Mvc\Model 
{ 
    public static function findSomething($something) 
    { 
     // this is your actual query, it replaces the queryBuilder 
     return self::query() 
      ->where('sanpham.sosanpham = :id:', ['id' => $something]) 
      ->innerJoin('danhmuc', 'sanpham.danhmuc = danhmuc.sodanhmuc') 
      ->execute()->getFirst(); 
    } 

    public function initialize() 
    { 
     // define the relation to danhmuc 
     $this->belongsTo('danhmuc', 'danhmuc', 'sodanhmuc'); 
    } 
} 

class Danhmuc extends \Phalcon\Mvc\Model 
{ 
    public function initialize() 
    { 
     // there are other options besides "hasMany", like "hasOne". 
     // this is your relation to sanpham 
     $this->hasMany('sodanhmuc', 'sanpham', 'danhmuc'); 
    } 
} 

class YourController extends \Phalcon\Mvc\Controller 
{ 
    public function testAction() 
    { 
     // get your first record in Sanpham matching "12345" 
     $sanpham = Sanpham::findSomething(12345); 

     // from your Sanpham object, get the related danhmuc object. 
     // this works because we defined the relations (belongsTo and hasMany) 
     $danhmuc = $sanpham->getRelated('danhmuc'); 

     // now you have access to the values of danhmuc via the $danhmuc variable 
     $breadcrumbs = [ 
      '/'         => Tool::getTranslation()->_('trangchu'), 
      "/Loai-san-pham/" . $danhmuc->tendep => $danhmuc->tendanhmuc, 
      ''         => $danhmuc->tieudesanpham, 
     ]; 
    } 
} 

この詳細はPhalcon model docsを確認してください。

+0

あなたのコードを使用した後、私はエラーが発生します:例外:未知モデルまたは別名 'sanpham'(11)、準備中:SELECT [Sanpham]。* FROM [Sanpham] INNER JOIN [danhmuc] ON sanpham.danhmuc = danhmuc.sodanhmuc WHERE sanpham.sosanpham =:id: – chipheo83

+0

あなたの 'sanpham'モデルの名前を使用してください – Timothy

関連する問題