Tôi đang sử dụng Laravel và cần phải chạy truy vấn sql liệu từ một mô hình/lớp RepositoryChạy sql liệu bên trong mẫu: Laravel
INSERT INTO calendar
(room_id, date, default_count, default_price)
VALUES ('1', '2017-01-02', '2', '400004')
ON DUPLICATE KEY UPDATE
default_count = VALUES(default_count), default_price = VALUES(default_price);
cũ. Khi tôi chèn dữ liệu từ UserRepository
$this->users->insert(['email' => '[email protected]', 'votes' => 0]);
Tôi cần một số loại phương pháp để có được kết nối DB và chạy sql qua mô hình
//Something like
$this->users->execute($sql);
tôi thấy Laravel có updateOrInsert()
phương pháp nhưng tôi cần phải chạy này cho nhiều dữ liệu đặt cùng một lúc.
Làm cách nào để chạy truy vấn sql thô thông qua lớp mô hình hoặc kho lưu trữ?
Cảm ơn
CẬP NHẬT - SOLVED
tôi đã đi qua Eloquent Model Sourcecode và thấy tôi có thể nhận được phương pháp()
$this->users->getConnection()->statement($sql);
Vui lòng làm rõ vấn đề cụ thể của bạn hoặc thêm chi tiết bổ sung để làm nổi bật chính xác những gì bạn cần. Như nó hiện đang được viết, thật khó để nói chính xác những gì bạn đang yêu cầu. –
@ZakariaAcharki Đã cập nhật –
Bạn không cần ** điều đó. Những gì bạn cần là bắt một ngoại lệ và kiểm tra xem mã của nó có chứa '23000' là mã cho mục nhập khóa trùng lặp hay không. Tại thời điểm đó, bạn chỉ cần tiến hành cập nhật mô hình của mình.Bạn có thể tạo một phương thức duy nhất trong mô hình của mình, giao dịch với chèn/bắt ngoại lệ/kiểm tra xem mã có phải là 23000 hay không và sau đó cập nhật mô hình của bạn. Bạn có thể tránh tìm nạp kết nối, giao dịch với giao dịch và tất cả những thứ khó chịu khác mà bạn muốn thực hiện. – Mjh