gpt4 book ai didi

mysql - 使用 Laravel 查询生成器加入无法正常工作

转载 作者:行者123 更新时间:2023-11-29 08:08:24 25 4
gpt4 key购买 nike

我正在尝试使用查询生成器进行连接,使用 ON 和 WHERE 提取两个表中存在的所有记录(内连接)。当我执行原始 SQL 时它可以工作并给出 9k 条记录的计数,但是当我使用查询生成器时,我的计数每次都是 0。我做错了什么?

Laravel 查询生成器

$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();
$this->info($count);

原始 SQL

select * 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 中做错了什么吗?

最佳答案

有两种方法可以做到这一点,第一种是通过查询构建器 API,第二种是通过编写原始查询,这不是一种安全的做法,您可以尝试最适合您的方法。

第一种方式

  $results=DB::table('listings_queue')
->join('listing','listings_queue.mls_listing_id','=','listings.mls_listing_id')
->select('*')
->where('listings.mls_id','listings_queue.mls_id')
->where('listings.city','listings_queue.city');
->get();

第二种方式

$results=DB::select(DB::raw("
select * 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`"));

关于mysql - 使用 Laravel 查询生成器加入无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22240884/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com