查询生成器 laravel 和 select

Query builder laravel with and select

我想在结果中显示“cars.name”。 我需要使用“cars.name”值稍后订购

$this->model
        ->select("pieces.*", "cars.name")
        ->where('cars_id', $carId)
        ->with('cars')
        ->has('cars', '>=', 1);

我该怎么做?

您可以通过在 with() 中传递一个闭包函数来尝试这样做:

$this->model
        ->select("pieces.*")
        ->where('cars_id', $carId)
        ->with('cars'=> function ($query) {
             $query->select('id','name');
        }])
        ->has('cars', '>=', 1);

它只会 select 来自其他 table 的 ID 和用户名。

请记住,主键(在本例中为 id)需要是 $query->select() 中的第一个参数才能实际检索必要的结果。

您首先构建的只是一个查询,然后需要在服务器上检索它,使用 get(),您将看到错误消息。需要更多关于零件和汽车之间关系的信息来提供帮助。试一试 -

$this->model::whereHas('cars',function(builder $query)use($cardId){
$query->where('cars_id', $carId);})->has('cars', '>=', 1)->with('cars')->get();
then obtain cars name via denamic property of a relation