模型 ORM 中的 Phalcon DB 标准
Phalcon DB Criteria in Model ORM
在 Phalcon 模型中有没有办法使用 SQL "IN" 条件和其他数据库标准?例如,我想在 phalcon
中执行这个查询
SELECT user_fullname, user_email FROM tbl_users WHERE user_id IN (1,2,3,4,5)
我知道您可以使用查询生成器,但我希望它是 ORM。我想要我的模型 getUsersByIds($userIds, $columnsToSelect) 中的一个方法,它将接受要在 table.
中获取的一组用户标识和列
请看下面我的模型
<?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);
...................................
.........................
..............
}
}
有两种方法可以做到这一点:
方法一:inWhere('columnName', array('columnValues'))
public function getUsersByIds(array $userIds, $columnsToSelect = '') {
return self::query()
->inWhere('id', $userIds)
->columns($columnsToSelect ?: '*')
->execute();
}
这个在你的User
模型中
方法二:conditions => 'id IN ({ids:array})
User::find(['id IN ({ids:array})',
'columns' => $columnsToSelect,
'bind' => array('ids' => $userIds)]);
我在手机上打字,所以可能有错别字。
在 Phalcon 模型中有没有办法使用 SQL "IN" 条件和其他数据库标准?例如,我想在 phalcon
中执行这个查询SELECT user_fullname, user_email FROM tbl_users WHERE user_id IN (1,2,3,4,5)
我知道您可以使用查询生成器,但我希望它是 ORM。我想要我的模型 getUsersByIds($userIds, $columnsToSelect) 中的一个方法,它将接受要在 table.
中获取的一组用户标识和列请看下面我的模型
<?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);
...................................
.........................
..............
}
}
有两种方法可以做到这一点:
方法一:inWhere('columnName', array('columnValues'))
public function getUsersByIds(array $userIds, $columnsToSelect = '') {
return self::query()
->inWhere('id', $userIds)
->columns($columnsToSelect ?: '*')
->execute();
}
这个在你的User
模型中
方法二:conditions => 'id IN ({ids:array})
User::find(['id IN ({ids:array})',
'columns' => $columnsToSelect,
'bind' => array('ids' => $userIds)]);
我在手机上打字,所以可能有错别字。