Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Страницы 1
Версия Laravel: 8
Версия PHP: 7.4
Необходимо определить возрастную категорию человека на основании возрастного диапазона который находится в другой таблице:
Есть таблица 1 в которой содержаться данные о дате рождения,
в таблице 2 содержаться:
название возрастной категории,
стартовый возраст категории,
конечный возраст категории.
Пытаюсь понять как сделать так что бы при получении данных из таблицы 1, рассчитать возраст человека, сравнить его с диапазоном возрастов из таблицы 2, и подставить название возрастной категории
советующей возрасту человека в итоговую коллекцию.
Спасибо тебе добрый человек! Все заработало, и как всегда оказалось проще чем я думал.
Здравствуйте, есть две модели связанные отношением многие-ко-многим через промежуточную таблицу
$athlete = Athlete::with(['groups'])->find($id)
Как вытащить название группы из таблицы groups у которой в промежуточной таблице наибольшая дата?
Посмотрел подобные темы на форуме попробовал сделать вот так:
$groups = $athlete->groups()
->wherePivot('created_at', '1974-07-24 06:47:31')
->get();
А как теперь сделать что бы запрос сам фильтровал дату по максимальной?
Основной вопрос снят, правильно приходит 302, там в методах редиректы. Но теперь другая проблема как в гейт через тест передать id пользователя сам гейт выглядит так
Gate::define('can-edit-info', function (User $user, Request $request) {
return
$user->id == $request->route('id') ||
$user->role == 1 ||
$user->id == $request->input('id');
});
В логи все верно залетает если вывести через инфо $user->id - id зарегистрированного пользователя. Соответственно проблема в том что бы сделать проверку $user->id == $request->input('id')
Все привет! Подскажите что я делаю не так. Тестирую метод контроллера
public function editUserGeneralInfo(Request $request, User $user)
{
if (Gate::denies('can-edit-info', [$request])) {
$request->session()->flash('error', 'Доступ запрещен');
return redirect('/users');
};
User::where('id', $request->input('id'))->update([
'name'=>$request->input('name'),
'workplace'=>$request->input('workplace'),
'mobile'=>$request->input('mobile'),
'adress'=>$request->input('adress')
]);
$request->session()->flash('status', 'Данные успешно обновлены');
return redirect('/users');
}
//Тест
public function testEditUserGeneralInfo()
{
$response = $this->actingAs($this->user)
->withSession(['foo' => 'bar'])
->post('/editUserGeneralInfo', [
'_token'=>'kHwQvTEH6mRxCgKDyJtEb2op6vxtCxKRJyqXK61w',
'id'=>'2',
'name'=>'asdasdasd'
]);
dd($response->status());
}
Сам маршрут: Route::post('/editUserGeneralInfo', 'UserController@editUserGeneralInfo')->name('editUserGeneralInfo');
Всегда получаю статус 419, как я понял это статус как правило ошибки проверки CSRF. Если отключить CSRF защиту то статус 302.
Версия ларавер 5.6. OpenServer
Страницы 1