首页 文章

如何将此SQL转换为Laravel查询生成器查询?

提问于
浏览
0

我在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 回答

  • 0

    删除关闭像:

    $count = DB::table('listings_queue')
    ->join('listings', 'listings_queue.mls_listing_id', '=', 'listings.mls_listing_id')
    ->where('listings.mls_id','=','listings_queue.mls_id')
    ->where('listings.city', '=', 'listings_queue.city')
    ->count();
    

相关问题