У меня есть две таблицы users
и users_logs
.
Таблица users_logs
связана с users
с помощью user_id
.
Таблица users_logs
может иметь несколько записей против разных пользователей, например 100 записей могут иметь против одного user_id
.
Я хочу получить всех пользователей из таблицы users
, используя только одну последнюю запись каждого пользователя в таблице users_logs
, затем хочу чтобы проверить условие для последних записей каждого пользователя.
Я также создал отношение hasMany в таблице users
.
public function users_logs_details(){
return $this->hasMany('App\UsersLog', 'user_id', 'id');
}
Код, который я пробовал:
$users = User::with(['users_logs_details'])
->whereHas('users_logs_details', function($query) {
return $query->where('status', '=', 1)->latest()->take(1);
})->get();
Но я не получаю желаемого результата, потому что этот запрос проверяет все записи в таблице users_logs
, но я хочу проверить только самую последнюю запись. Если статус = 1 действителен для любой записи пользователя в users_logs
таблица затем возвращает запись, но я хочу проверить статус = 1 только в последней записи, если статус = 0 в последней записи (независимо от того, равен ли он 1 в старой записи), он не должен возвращать результат для этой записи. Пожалуйста, помогите, я был бы очень благодарен.
Примечание: изображения только для справки