我在SQL中有以下查询,但是我无法在Laravel的查询构建器中使用它 . 这是SQL:
SQL
select count(listings_queue.mls_listing_id) from listings_queue
INNER JOIN listings
ON `listings_queue`.`mls_listing_id` = `listings`.`mls_listing_id`
WHERE `listings`.`mls_id`=`listings_queue`.`mls_id`
AND `listings`.`city`=`listings_queue`.`city`
Laravel Query Builder
$count = DB::table('listings_queue')
->join('listings', function($join)
{
$join->on('listings_queue.mls_listing_id', '=', 'listings.mls_listing_id');
})
->where('listings.mls_id','=','listings_queue.mls_id')
->where('listings.city', '=', 'listings_queue.city')
->count();
这会产生0的计数,但上面的SQL产生11,550行 .
如果我使用Laravel查询生成器并使用toSql();最后,我得到:
toSql(); in Laravel
select * from `listings_queue`
inner join `listings`
on `listings_queue`.`mls_listing_id` = `listings`.`mls_listing_id`
where `listings`.`mls_id` = ?
and `listings`.`city` = ?
这里疯狂的事情是原始的SQL输出看起来除了相同?绑定 . Coudl那是问题吗?我不明白为什么我的查询构建器查询在与顶部的原始SQL相同的数据库上运行会产生不同的结果 .
另一个线索是,如果我在laravel查询构建器查询中删除where子句,我会得到结果 .
我在其他地方问了这个问题,但没有做好解释,所以在这里 . 非常感谢您提供的任何帮助!
1 回答
删除关闭像: