【问题标题】:Is there a way to conver this RAW query into Eloquent?有没有办法将此 RAW 查询转换为 Eloquent?
【发布时间】:2019-07-12 10:37:32
【问题描述】:

我有这行查询可以通过 localhost 在 MySQL 上运行,我想在我的 Laravel 上使用它,但我不知道如何将我的代码转换或翻译成 Eloquent。

这两个模型相互关联。这是我用我的代码尝试的。

状态

public function reqs(){
        return $this->belongsTo('App\Reqs','reqs_id','id');
}

要求

public function statuses()
{
    return $this->hasMany('App\Statuses','reqs_id','id');
}

这是我尝试过的,但它无法得到我想要的

$reqs = Statuses::with('reqs')->
where('status','=',$status)->
where('user_id','=',auth()->user()->id)->get();

另一方面,这是有效的

DB::select('SELECT * from `statuses`, `reqs`
            WHERE `statuses`.`status` = ?
            AND `reqs`.`id` = `statuses`.`reqs_id`
            AND `reqs`.`user_id` = ?
            ', [$status,auth()->user()->id]);

我得到了我的预期,但我想知道是否有一种雄辩的方式。 谢谢。

【问题讨论】:

标签: php mysql database laravel eloquent


【解决方案1】:

您不能使用 Eloquent 从两个表中进行选择,您需要明确加入另一个表。您不需要此查询的 select() 部分,但您可能应该明确说明所需的字段,以便获得所需的数据。

Status::select('statuses.*')
    ->join('reqs', 'reqs.id', '=', 'statuses.reqs_id')
    ->where('statuses.status', $status)
    ->where('reqs.user_id', auth()->id())
    ->get();

【讨论】:

    猜你喜欢
    • 2013-01-08
    • 1970-01-01
    • 1970-01-01
    • 2022-07-06
    • 1970-01-01
    • 2021-10-06
    • 2014-12-26
    • 2020-01-24
    相关资源
    最近更新 更多