Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

SQL / Laravel - Tại sao truy vấn của tôi trả về một tập hợp trống?

Đó là một cái gì đó một chút "khó khăn". Truy vấn bạn đang thực hiện trong phpmyadmin thực sự là chính xác. Tuy nhiên, Laravel sử dụng where()on() khác.

Sử dụng where() với một giá trị và on() khi làm việc với các cột.

$times = Time::join(\DB::raw('(SELECT `ath_id`, `stroke_id`, MIN(time) AS time FROM times GROUP BY ath_id, stroke_id) b'), function($join) {
                 $join->on('times.ath_id', '=', 'b.ath_id')
                      ->on('times.stroke_id', '=', 'b.stroke_id')
                      ->on('times.time', '=', 'b.time');
             })
             ->where('times.ath_id', '=', $id)
             ->orderBy('times.stroke_id', 'ASC')
             ->orderBy('times.date', 'DESC');

Tài liệu: https://laravel.com/docs/5.4/queries , phần (CTRL + F): Kết hợp nâng cao

Để làm rõ hơn một chút:

$join->on('times.ath_id', '=', 'b.auth_id')->where('times.stroke_id', '=','b.stroke_id');

kết quả là:

JOIN on `times`.`ath_id` = `b`.`auth_id` WHERE `times`.`stroke_id` = 'b.stroke_id' -- AS STRING

Sự nhầm lẫn xảy ra khi toSql() đã trả lại truy vấn của bạn và bạn giả định rằng Laravel biết rằng:

['b.stroke_id', 'b.time', '4298584']

hai ràng buộc ràng buộc đầu tiên là cột. Nhưng where() nghĩ rằng họ chỉ là chuỗi.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Thuật sĩ nhập dữ liệu bảng bàn làm việc MySQL cực kỳ chậm

  2. MySQL, Giúp người dùng xếp hạng

  3. Làm cách nào để gọi một hàm mysql (như mysql_insert_id) từ Perl nếu tôi đang sử dụng DBI / DBD?

  4. Có thể có một cột MySQL chứa nhiều giá trị làm khóa ngoại không?

  5. Làm cách nào để cho phép khách hàng đăng nhập vào trang web của bạn bằng tài khoản Google của họ?