2017-12-05 7 views
2

findFirst()呼び出しを実行してデータを取得しようとしましたが、機能しません。私はそんなに試してみて、どこでも探していましたが、解決策は見つけられませんでした。 phalconphp hasMany()とbelongsTo()が結合しない

私は、これらのテーブルがあります。私のフルーツモデル@Initialize()で

- fruit 
    fruit_id 
    fruit_name 
- fruit_color 
    fruit_id 
    fruit_color_name 

を、私は宣言:私のfruit_colorモデルで

$this->hasOne('fruit_id', 'fruitColor', 'fruit_id'); 

、@initalizeは()、私が持っている:

$this->belongsTo('fruit_id', 'fruit', 'fruit_id'); 

find()メソッドまたはfindFirst()メソッドを呼び出すと、何も取得できません。私が印刷してデバッグするとき、私は結合が呼び出されず、単純なSELECT(*)しか得られないことが分かります。

手掛かりはありますか?

答えて

2

あなたはモデル関係の考え方を理解していないと思います。私は例を説明しようとします。

モデル関係は結合をまったく行いません。関連するモデルをリクエストすると、追加のクエリが実行されます。ただしhttps://docs.phalconphp.com/en/3.2/db-models-relationships


:モデルの関係について

$user = Users::findFirst(12); 
$user->videos; // This will return all videos for this user 

さらに詳しい情報:あなたがそうのようにそれを使用することができます上で定義された関係で

モデルリレーションズ

public function initialize() 
{ 
    $this->hasMany('id', 'Models\ServicesVideos', 'service_id', [ 
     'alias' => 'videos', 
     'params' => [ 
      'order' => 'position ASC', 
      'conditions' => 'type = :type:', 
      'bind' => [ 
       'type' => get_class($this) 
      ] 
     ] 
    ]); 
} 

あなたは2つまたはmに参加する必要がありますあなたがクエリービルダーを使用したい鉱石のテーブル。

$lang = $this->getDI()->getSession()->language; 
$cacheFile = 'news-'. $lang; 
$items = $this->modelsManager->createBuilder() 
    ->columns([ 
     'main.id', 
     'main.title', 
     'main.slug', 
     'main.summary', 

     'upload.id AS imageId', 
     'upload.filename AS imageFilename', 
     'upload.ver AS uploadVersion', 
    ]) 
    ->from(['main' => 'Models\News']) 
    ->leftJoin('Models\Uploads', 'upload.foreign_key = main.id AND upload.section = "newsImage" AND upload.is_active = "1" AND upload.is_default = "1"', 'upload') 
    ->where('main.is_active = 1') 
    ->andWhere('main.lang = :lang:', ['lang' => $lang]) 
    ->orderBy('main.ord ASC') 
    ->getQuery()->cache(['key' => $cacheFile])->execute(); 

クエリビルダについての詳細情報:そこhttps://docs.phalconphp.com/en/3.2/db-models

+1

ねえ...私はちょうど何か、hasOneの/ hasManyの機能でのparam配列:) はありがとうを行方不明になりました! – Finkle

関連する問題