gpt4 book ai didi

php - 将 mysql 查询转换为 Eloquent laravel 查询

转载 作者:可可西里 更新时间:2023-11-01 08:39:28 25 4
gpt4 key购买 nike

我正在尝试在 laravel 中进行以下查询:

SELECT a.name AS subname, a.area_id, b.name,  u. id, u.lawyer_id,u.active_search, 

FROM subarea a
LEFT JOIN user_subarea u ON u.subarea_id = a.id
AND u.user_id = ?
LEFT JOIN branch b ON a.area_id = b.id

思路是获取子区域,看用户是否激活了搜索。

user_subarea 表可能有一条记录与 active_search 等于 0 或 1 的子区域表的 id 相匹配。如果它不存在,我希望查询返回 null。

虽然我能够在原始 SQL 中实现这一点,但当我在 Laravel 中使用 Eloquent 进行相同的尝试时,我没有返回任何值。我做了以下事情:

$query = DB::table('subarea')

->join('user_subarea', function($join)
{
$value = \Auth::user()->id;
$join->on( 'subarea.id', '=', 'user_subarea.subarea_id')->where('user_subarea.user_id', '=',$value);
})
->leftJoin('branch', 'subarea.area_id', '=', 'branch.id')
->select('branch.name', 'subarea.name as subarea', 'user_subarea.active_search_lawyer', 'user_subarea.id' )

->get();

任何帮助将不胜感激。

最佳答案

我自己找到了答案,就是在第一个连接中添加一个 lefjoin。它不在 laravel 文档中,但也可以。

$query = DB::table('subarea')

->lefjoin('user_subarea', function($join)
{
$value = \Auth::user()->id;
$join->on( 'subarea.id', '=', 'user_subarea.subarea_id')->where('user_subarea.user_id', '=',$value);
})
->leftJoin('branch', 'subarea.area_id', '=', 'branch.id')
->select('branch.name', 'subarea.name as subarea', 'user_subarea.active_search_lawyer', 'user_subarea.id' )

->get();

关于php - 将 mysql 查询转换为 Eloquent laravel 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40829147/

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