繁体   English   中英

Laravel Eloquent left在whereIn查询中加入

[英]Laravel Eloquent leftJoin within a whereIn query

如果我有类似以下的内容,如何在“ with(new Model)”部分添加左联接?

Model::whereIn('name', function ($query) use ($link) {
    $query->select('name')
        ->from(with(new Model)->getTable()) // would like to do a leftJoin here
        ->where('link', $link);
})->get();

我试过了

Model::whereIn('name', function ($query) use ($link) {
    $query->select('name')
        ->from(with(new Model)->leftJoin('tableZ', Model.col1, '=', tableZ.col1)->getTable())
        ->where('link', $link);
})->get();

我也尝试过:

Model::whereIn('name', function ($query) use ($link) {
    $query->select('name')
        ->from(with(new Model)->getTable())
        ->leftJoin('tableZ', Model.col1, '=', tableZ.col1)
        ->where('link', $link);
})->get();

不确定我该怎么做。

tableZ link字段吗? 如果是这样

->where('table.link', $link)

可能就是您想要的。 我将在您的第二个示例中使用它; 我不认为将leftJoin()直接应用于with函数是leftJoin() ,因为with()似乎返回模型对象,而不是查询。

也许您应该这样做。

    DB::table("table_A")
    ->leftJoin("table_B","table_A.id,"=","table_B.A_id)
    ->select(['table_A.name as name','xxxxxx']);

我认为您可以尝试这样做可能会解决您的问题:

Model::whereIn('name', function ($query) use ($link) {
    $query->select('name')
        ->from(with(new Model)->getTable())
        ->leftJoin('tableZ', Model.col1, '=', tableZ.col1)
        ->where('tableZ.link', $link);
})->get();

希望这项工作为您服务!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM