着墨中文lisp登入_墨风 - SegmentFault 思否

需求1:SELECT COUNT(*) FROM

(SELECT * FROM abc GROUP BY col1) AS a;

执行代码$sub = Abc::where(..)->groupBy(..); // Eloquent Builder instance

$count = DB::table( DB::raw("({$sub->toSql()}) as sub") )

->mergeBindings($sub->getQuery()) // you need to get underlying Query Builder

->count();

需求2: 执行如下代码SELECT

`p`.`id`,

`p`.`name`,

`p`.`img`,

`p`.`safe_name`,

`p`.`sku`,

`p`.`productstatusid`

FROM `products` p

WHERE `p`.`id` IN (

SELECT

`product_id`

FROM `product_category`

WHERE `category_id` IN ('223', '15')

)

AND `p`.`active`=1

实现:Products::whereIn('id', function($query){

$query->select('paper_type_id')

->from(with(new ProductCategory)->getTable())

->whereIn('category_id', ['223', '15'])

->where('active', 1);

})->get();

综合运用:$query = \DB::table('message')

->where(function ($query) use ($userId) {

$query->where([

['receiver_id', '=', "$userId"],

['type', '=', Messages::PRIVATE_MESSAGE],

]);

});

if (!empty($groupIds)) {

$query->orWhere(function ($queryq) use ($groupIds) {

$queryq

->where([

['type', '=', Messages::GROUP_MESSAGE],

['message.created_at', '>', \Auth::user()->created_at]

])

->whereIn('receiver_id', $groupIds);

});

}

/* 获取广播 */

$query->orWhere(function ($query) {

$query

->where([

['type', '=', Messages::BROADCAST_MESSAGE],

['dead_line', '>', Carbon::createFromTimestamp(time())],

['message.created_at', '>', \Auth::user()->created_at]

]);

});

$query->leftJoin('message_log', function ($join) use ($userId) {

$join->on('message.id', '=', 'message_log.message_id')

->where('message_log.user_id', '=', $userId);

})

->leftJoin('subscribe', function ($join) use ($userId) {

$join->on('subscribe.pcode_id', '=', 'message.receiver_id')

->where('subscribe.user_id', '=', $userId);

})

->select([

'message_log.id as message_log_id',

'message.id as message_id',

'message.content',

'message.type',

'message.sender_id',

'message.updated_at',

'message.created_at',

'message.dead_line',

\DB::raw('IF (message.`created_at` < subscribe.`created_at` , 1, 0) AS is_expired')

]);

$resQuery = \DB::table(\DB::raw("({$query->toSql()}) as sub"))

->mergeBindings($query)

->where('is_expired', '=', 0);查看原文

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值