2016-09-01 13 views
0

Phalconモデルでは、SQL "IN"条件と他のデータベース基準を使用する方法がありますか?例えば、私はphalconモデルORMのPhalcon DBの基準

SELECT user_fullname, user_email FROM tbl_users WHERE user_id IN (1,2,3,4,5) 

でこのクエリを実行したい私は、クエリビルダを使用することができます知っているが、私はそれがORMになりたいです。私はモデルのgetUsersByIds($ userIds、$ columnsToSelect)に、テーブルにフェッチしたいユーザIDとカラムの配列を受け入れるメソッドが必要です。

これを行うための2つの方法があります

<?php 

use Phalcon\Mvc\Model; 

class User extends Model 
{ 
/** 
* 
* @var integer 
*/ 
public $user_id; 

/** 
* 
* @var string 
*/ 
public $user_email; 

/** 
* 
* @var string 
*/ 

public user_phone; 
/** 
* 
* @var string 
*/ 
public user_fullname; 

public function initialize() 
{ $this->hasMany('user_id','Store\Bag','user_id'); 
} 
public function getSource() 
{ 
    return "tbl_user"; 
} 

public function find($parameters = null) 
{ 
    return parent::find($parameters); 
} 

public function findFirst($parameters = null) 
{ 
    return parent::findFirst($parameters); 
} 
/** 
* I want to execute this query in my model 
* SELECT user_fullname,user_email from tbl_user where user_id IN (1,2,3,4,5); 
*/ 
public function getUsersByIds($ids=array(), $columns=array()) 
{ 
    if(!is_array($ids)) 
     $ids = array($ids); 
    if(!is_array($columns)) 
     $columns = array($columns); 

    ................................... 
    ......................... 
     .............. 
} 
} 

答えて

2

以下の私のモデルを参照してください。

方法1:inWhere('columnName', array('columnValues'))

public function getUsersByIds(array $userIds, $columnsToSelect = '') { 
    return self::query() 
    ->inWhere('id', $userIds) 
    ->columns($columnsToSelect ?: '*') 
    ->execute(); 
} 

はこの1つはあなたのUserモデルに


を行きます

方法2:conditions => 'id IN ({ids:array})

User::find(['id IN ({ids:array})', 
      'columns' => $columnsToSelect, 
      'bind' => array('ids' => $userIds)]); 

私は自分の携帯電話に入力していますので、そこにタイプミスがあるかもしれません。

+1

'{ids:array} 'の+1です。あなたのケースでは、$ columnsToSelect?: '*' 'を注意してください。$ columnsToSelectは、関数定義のデフォルト値を持っていますが、設定されていなければ通知を出します。 :) –

+0

@NikolayMihaylov、タイポ修正のおかげで:) – Timothy

+0

それは動作します!私は方法1が必要です。すべての助けをありがとうございます – user1149244