Необходимо найти запись с именем first_name таблицы User, равным ключевому слову, или тема объекта TeacherSubject соответствует ключевому слову, но значение step_completed должно равняться 5, а значение is_approved должно равняться 1 от пользователя. таблицы, даже если условие orwhereHas истинно.
Так что, если бы я перевел ваше утверждение в запрос, я думаю, что оно должно выглядеть так:
$teachers = User
::select('id','email','first_name','last_name','profile_picture','country_code','mobile')
->with('teacherSubject')
->where(['first_name'=>$condition_array['keyword']])
->orWhere(function($query) use($condition_array) {
$query->whereHas('teacherSubject', function($teacherQuery) use($condition_array) {
$teacherQuery->where('subject',$condition_array['keyword']);
})
->where(['step_completed'=>5,'is_approved'=>1]);
})
->orderBy($order_column,$order_order)
->get();
Таким образом, у вас есть 2 условия:
- users.first_name == ключевое слово OR
- teacher_subject_user_id == users.id AND teacher_subject.subject = ключевое слово AND users.step_completed == 5 AND is_approved == 1
Если любое из этих двух значений истинно, оно будет отображено в результате.
Пожалуйста, дайте мне знать, если оно работает:)