我有一个任务,其中我需要从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
我想您需要将查询更改为如下内容:
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();