Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 Laravel 6/7/8/9/10 » Помогите найти решение с определением возрастной категории человека » 15.08.2022 13:15:03

markelovd
Ответов: 2

Версия Laravel: 8
Версия PHP: 7.4

Необходимо определить возрастную категорию человека на основании возрастного диапазона который находится в другой таблице:
    Есть таблица 1 в которой содержаться данные о дате рождения,
   
    в таблице 2 содержаться:
        название возрастной категории,
        стартовый возраст категории,
        конечный возраст категории.
   
    Пытаюсь понять как сделать так что бы при получении данных из таблицы 1, рассчитать возраст человека, сравнить его с диапазоном возрастов из таблицы 2, и подставить название возрастной категории
    советующей возрасту человека в итоговую коллекцию.

#2 Re: Laravel 6/7/8/9/10 » Подскажите как правильно написать запрос. » 23.12.2021 21:46:15

Спасибо тебе добрый человек! Все заработало, и как всегда оказалось проще чем я думал.

#3 Laravel 6/7/8/9/10 » Подскажите как правильно написать запрос. » 23.12.2021 11:17:09

markelovd
Ответов: 2

Здравствуйте, есть две модели связанные отношением многие-ко-многим через промежуточную таблицу

$athlete = Athlete::with(['groups'])->find($id)

Как вытащить название группы из таблицы groups у которой в промежуточной таблице наибольшая дата?

Посмотрел подобные темы на форуме попробовал сделать вот так:

$groups = $athlete->groups()
            ->wherePivot('created_at', '1974-07-24 06:47:31')
            ->get();

А как теперь сделать что бы запрос сам фильтровал дату по максимальной?

#4 Re: Laravel 5.x » Помогите с написание теста » 15.12.2021 09:57:44

Основной вопрос снят, правильно приходит 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')

#5 Laravel 5.x » Помогите с написание теста » 15.12.2021 08:48:28

markelovd
Ответов: 1

Все привет! Подскажите что я делаю не так. Тестирую метод контроллера

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

Подвал раздела