【问题标题】:SQLSTATE[23000]: Integrity constraint violation: 1052 Column 'created_at' in order clause is ambiguous Laravel 8SQLSTATE [23000]:完整性约束违规:1052 列“created_at”在 order 子句中不明确 Laravel 8
【发布时间】:2021-08-16 11:59:12
【问题描述】:

我只是不知道我的代码有什么问题以及为什么会产生此错误:

SQLSTATE[23000]:完整性约束违规:1052 列 'created_at' 在 order 子句中不明确(SQL:select * from cars inner join car_books on car_books.car_id = cars.@ 987654326@ order by created_at desc)

这是我的代码:

public function carBook()
{
    $car_books = Car::join('car_books','car_books.car_id','=','cars.id')->latest()->get();
    return view('admin.car_book',compact('car_books'));
}

【问题讨论】:

    标签: javascript php mysql laravel-8


    【解决方案1】:

    错误告诉您carscar_books 表中都有一个created_at 字段。您需要在order by 子句中准确指定要使用的那些。所以要么:

    order by cars.created_at desc
    

    或者:

    order by car_books.created_at desc
    

    【讨论】:

    • 我已经像这样更改了我的代码: public function carBook() { $car_books = Car::join('car_books','car_books.car_id','=','cars.id') ->orderBy('car_books.created_at', 'desc')->latest()->get();返回视图('admin.car_book',compact('car_books'));但后来我得到这个错误: SQLSTATE [23000]:完整性约束违规:1052 列'created_at' in order 子句不明确(SQL:select * from cars inner join car_books on car_books.car_id = cars.id order by car_books.created_at desc, created_at desc)
    • 删除latest()
    【解决方案2】:

    您必须通过 cars.created_at 或 car_books.created_at 订购。 两个表都有created_at列,所以不明确。

    【讨论】:

    • 我已经像这样更改了我的代码: public function carBook() { $car_books = Car::join('car_books','car_books.car_id','=','cars.id') ->orderBy('car_books.created_at', 'desc')->latest()->get();返回视图('admin.car_book',compact('car_books'));但后来我得到这个错误: SQLSTATE [23000]:完整性约束违规:1052 列'created_at' in order 子句不明确(SQL:select * from cars inner join car_books on car_books.car_id = cars.id 订购 car_books.created_at desc, created_at desc)
    • 你不应该使用 latest()。只需尝试使用 ->limit(1)->get()
    猜你喜欢
    • 2019-02-22
    • 2022-11-24
    • 1970-01-01
    • 2020-11-23
    • 2021-10-11
    • 1970-01-01
    • 2022-08-18
    • 2021-02-05
    • 1970-01-01
    相关资源
    最近更新 更多