Được rồi sau giờ nghiên cứu và vẫn đang sử dụng DB :: chọn Tôi phải đặt câu hỏi này. Bởi vì tôi chuẩn bị máng máy tính của mình;).Trình tạo truy vấn thông thạo Laravel Tham gia với truy vấn phụ
Tôi muốn nhận dữ liệu nhập cuối cùng của người dùng (dựa trên dấu thời gian). Tôi có thể làm điều này với sql liệu
SELECT c.*, p.*
FROM users c INNER JOIN
(
SELECT user_id,
MAX(created_at) MaxDate
FROM `catch-text`
GROUP BY user_id
) MaxDates ON c.id = MaxDates.user_id INNER JOIN
`catch-text` p ON MaxDates.user_id = p.user_id
AND MaxDates.MaxDate = p.created_at
Tôi đã truy vấn này từ một bài here trên stackoverflow.
Tôi đã thử mọi thứ để làm điều này với trình tạo truy vấn thông thạo trong Laravel tuy nhiên không thành công.
Tôi biết hướng dẫn nói rằng bạn có thể làm điều này:
DB::table('users')
->join('contacts', function($join)
{
$join->on('users.id', '=', 'contacts.user_id')->orOn(...);
})
->get();
Nhưng đó không phải đang giúp nhiều vì tôi không thấy làm thế nào tôi có thể sử dụng một subquery đó? Bất cứ ai có thể thắp sáng ngày của tôi?
Gói này được coi để cung cấp một công cụ PHP được thiết lập để xây dựng các truy vấn, nhưng chúng ta cần ghi lại truy vấn và tiêm nó bằng câu lệnh 'selectRaw'! Bạn có may mắn khi chuyển đối tượng truy vấn thông thạo cho truy vấn, thay vì chuỗi truy vấn không? – HPM
Điều này trở thành không thể nếu bạn có một tham số trong subselect - xem câu trả lời @ ph4r05 ví dụ, nhưng tôi không chắc chắn nếu nó có thể được đơn giản hóa để tránh những xấu xí toSql và addBinding – JustAMartin