2016-09-01 6 views
0

В модели Phalcon есть способ использовать условие SQL «IN» и другие критерии базы данных? Например, я хочу, чтобы выполнить этот запрос в PhalconКритерии Phalcon DB в модели ORM

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

Я знаю, что вы можете использовать конструктор запросов, но я хочу, чтобы это было ОРМ. Мне нужен метод в моей модели getUsersByIds ($ userIds, $ columnsToSelect), который примет массив идентификаторов пользователей и столбцов, которые вы хотите получить в таблице.

Смотрите мою модель ниже

<?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(); 
} 

Это один идет в вашей User модели


Способ 2: conditions => 'id IN ({ids:array})

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

Я печатаю на моем мобильном телефоне, так что может быть опечатка там.

+1

+1 для '{ids: array}'. Просто обратите внимание: '$ columnsToSelect?: '*'' В вашем случае $ columnsToSelect имеет значение по умолчанию в определении функции, но если оно не установлено, оно будет вызывать уведомление. :) –

+0

@NikolayMihaylov, исправление опечатки :) – Timothy

+0

Он работает! Мне нужен метод 1. Большое спасибо за всю помощь – user1149244

 Смежные вопросы

  • Нет связанных вопросов^_^