提问者:小点点

尝试在Laravel中从MySQL获取标记值


我有一个任务,其中我需要从Laravel数据库中选择所有的驱动程序,并在绿色中突出显示那些可用的驱动程序。 这是我得到的错误:

SQLSTATE[23000]:完整性约束冲突:字段列表中的1052列“user_id”不明确(SQL:选择first_name,user_id FROM users as u inner join users_vehicles group by u users_id)

数据库表结构:

下面是我到目前为止的代码:

userModel.php

<?php

namespace App\Models;
use DB;

use Illuminate\Database\Eloquent\Model;

class UserModel extends Model
{
    //
    
    public function svivozaci(){
        
        $query=DB::SELECT("SELECT first_name,user_id FROM users as u inner join users_vehicles group by u.first_name");
        return $query;
    }
}

admin.blade.php

@extends('layout')

@section('content')

<h1>Admin page </h1>

@foreach($data as $d)

{{$d->first_name}} <br>

@endforeach

@endsection

共2个答案

匿名用户

我想您需要将查询更改为如下内容:

SELECT u.first_name, u.user_id 
FROM users as u 
INNER JOIN users_vehicles USING (user_id)
GROUP BY u.first_name, u.user_id

但是,如果您只需要拥有车辆的用户的姓名,则最好使用以下查询:

SELECT u.first_name, u.user_id
FROM users as u
WHERE EXISTS (SELECT * FROM users_vehicles uv WHERE uv.user_id = u.user_id)

检查此问题以查看连接与存在的比较

匿名用户

在users,users_vehicles.。。中,您有两列名称为user_id.。。

只要加上你。 在“选择”字段中的user_id之前。。。

 $query=DB::SELECT("SELECT first_name,u.user_id FROM users as u inner join users_vehicles group by u.first_name,u.last_name");

但我不建议您在没有聚合的情况下使用group by,您可以使用distinct:

 $query=DB::SELECT("SELECT first_name,u.user_id FROM users as u inner join users_vehicles")->distinct()->get();