Я пытаюсь выполнить запрос, где мне нужно подсчитать isApprove
столбец со значением 1 в моем approvals_document
. Вот как я это сделал в SQL-запросе.В чем причина Call to undefined method Illuminate Database Query Expression :: whereRaw()?
SELECT documents.id, documents.isApprove,
(SELECT COUNT(*) FROM approvals_document WHERE approvals_document.isApprove = 1 and approvals_document.document_id = documents.id) as approvedBy
FROM documents;
Выход:
id | isApprove | approvedBy
96 0 3
Когда я выступаю в этом Laravel с помощью DB::raw
и whereRaw
выражение. Это вызывает у меня ошибку.
Призыв к неопределенным метод Осветите \ Database \ Query \ Expression :: whereRaw()
Вот как я выполнил его в Laravel образом.
public function count()
{
$count = DB::table('documents')
->select('documents.id', 'documents.isApprove', DB::raw('COUNT(FROM approvals_document) as approvedBy')
->whereRaw('approvals_document.isApprove = 1 and approvals_document.document_id = documents.id'))
->get();
dd($count);
}
Любая помощь, как я получил эту проблему? Любая помощь будет оценена!
Обновление: я следил за советами aynber, используя левое соединение, но я получил эту ошибку.
я получил ошибку возле «FROM approvals_document) в approvedBy от' documents' где approvals_document»в строке 1. – Francisunoxx
Удалите FROM, он используется только для выбора таблицы. Я буду обновлять запрос с тем, каким он должен быть. – aynber
Я также добавил команду JOIN, так как он, вероятно, не связал бы две таблицы вместе. – aynber