mysql - ORM中如何进行子查询?

标签 mysql orm kohana kohana-orm kohana-3.3

有表格:

订单:

id
author_id
consumer_id
supplier_id
manager_id
status_id
created

订单存档

id, 
order_id, 
user_id, 
created

即有订单,任何用户都可以标记订单存档(客户、经理..)

我们需要获取当前用户创建的所有记录,以及因此添加到/已添加到存档(同一用户)的所有记录

$orders = ORM::factory('Order')
->where('author_id', '=', $this->user->id)
->and_where(?)

如何插入子查询?我是否正确理解您想要使用DB::expr()?怎么办?

最佳答案

不久前我做过一次,我在 where 子句中使用了子查询,如下所示:

$query = ORM::factory('user')->from(array('users', 'user'));
$query->where(DB::Expr('NOT'), 'EXISTS', DB::Expr('(SELECT * FROM blacklists as b WHERE b.user_id = user.id AND b.target_user_id =' . $this->request->post('requester_id') . ')'));

但是做这样的事情的另一种方法是这样的:

$query = DB::select()->from(array('table', 't'));
$sub = DB::select('imgname')->from('p_images')->where('pro_id','=',DB::Expr('`p`.`id`'))->and_where('imgtype','=','11')->limit(1);
$query->select(array($sub, 'prof_image'));
$p = $query->as_object()->execute();

关于mysql - ORM中如何进行子查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31994013/

相关文章:

node.js - Bookshelf.js - 如何保存多对多关系?

php - 发送 header 以下载 PDF 时,Safari 会附加 .html

php - 如何在 Join Query 中删除具有相同 id 的重复行?

php - MySQL:按两列分组并求和

mysql - 左连接和,组麻烦

mysql - 为什么这个错误不是异常

sql - MySQL foreach 替代过程

java - hibernate注释一对多与复合外键

php - Doctrine - OneToOne 单向与 OneToOne 双向

php - Kohana 2.3.4 ORM - 删除数据透视表关系