Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Перевожу - Метод post не существует.
Перед $second->save() выведите dd($second) и посмотрите, какие данные он имеет.
Вообще странно, ведь при создании модели в конструкторе берутся только данные, указанные в массиве $fillable.
Один только вопрос - зачем?
Используйте 5.4 для PHP 5.6. Ещё год bugfixes и два security fixes.
И я правильно понимаю, что сейчас не будет никаких ограничений на запросы + ссесия в redis не создается?
Точно.
в api.php роутов, ссесии и куки для этого маршрута создаваться не будут?
Сессии подключаются в группе web (3-й элемент массива).
'web' => [
\App\Http\Middleware\EncryptCookies::class,
\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
\Illuminate\Session\Middleware\StartSession::class,
// \Illuminate\Session\Middleware\AuthenticateSession::class,
\Illuminate\View\Middleware\ShareErrorsFromSession::class,
\App\Http\Middleware\VerifyCsrfToken::class,
\Illuminate\Routing\Middleware\SubstituteBindings::class,
],
где прочитать про эту часть
'api' => [ 'throttle:60,1', 'bindings', ]
,что за параметры задаются
Это middleware. Смотри App\Http\Kernel.
Первый разрешает 60 запросов в 1 минуту для одного IP-шника. Второй работает с параметрами роутера.
У Laravel есть свой инструмент Laravel Mix, работающий через Webpack. Там всё есть. Для ts используйте соответствующий метод.
Можно хэш создавать из столбцов, который будет первичным ключом.
Вариант 1. Если меню не динамическое, т.е. один раз создали и всё, то можно сделать 4 варианта меню, каждый в отдельном файле, и подключать их в главном шаблоне согласно правам.
Вариант 2. Создавать кэш меню в контроллере через Cache::remember() - будет 4 меню. Логика такая: проверяются права пользователя, определяется соответствующий ключ кэша, по этому ключу выводится меню. Для первого пользователя придётся обработать каждый пункт согласно правам и добавить его в кэш. А для остальных пользователей с теми же правами меню будет браться уже из кэша. Если меню будет меняться, то повесить событие на модель, чтобы при изменении удалялся кэш.
Лично мне первый вариант кажется самым простым.
Или в composer.json добавить раздел repositories с указанием нужного репозитория на гитхабе.
Есть ещё такой интересный подход.
Так что из формы приходит - password или userPassword? Валидатор проверяет password, а создается из $request->userPassword.
Бывают. Когда создается промежуточная (pivot) таблица или изменяется существующая. Можно при создании модели указать ключ -m для создания миграции.
php artisan make:model App\Models\User -m
Если указать ключ -c, то создастся ещё и контроллер. А если указать ещё -r, то контроллер будет с методами.
Raw (сырой) позволяет писать обычный sql запрос. Т.е. вместо, например,
$column = 'balance';
$operator = '>';
$value = 500;
$someQuery->where($column, $operator, $value)->get();
можно написать
// передать обычную строку
$someQuery->whereRaw('balance > 500')->get();
// или так (подготовленный запрос)
$someQuery->whereRaw('balance > ?', $request->input('balance'))->get();
В методе select() указываются поля таблицы, а в selectRaw() можно писать селект в свободной форме (без слов SELECT и FROM).
selectRaw() и select(DB:raw()) эквивалентны.
Вопрос из разряда "Не хочу документацию читать, сделайте мне по-бырому". В документации про связи написано очень доступно. Кроме того, я бы посоветовал глянуть в сторону уже готовых пакетов для комментариев. Даже хотя бы в качестве примера кода и связей, например, https://github.com/actuallymab/laravel-comment
Можно в контроллере расшарить
view()->share('title', 'Заголовок страницы');
return view...
Переменная $title будет доступна во всех видах.
Ещё получить валидатор можно так
$validator = $this->getValidationFactory()->make($request->all(), $rules, $messages);
if ($validator->fails()) {
return back()->withErrors($validator)->withInput();
}
Магический метод __toString() вызывает всё тот же метод render() класса View.
view() не выводит информацию в браузер, а всего лишь создаёт объект класса View. Поэтому буфер пустой. Получить распарсенное содержимое вида можно через метод render().
$html = view('settings.settings_images', $commonVarsArray)->render();
return \Response::json(['html'=>$html, 'settings_sliderImagesList'=>$settings_sliderImagesList, 'rows_count'=>count($settings_sliderImagesList)]);
Как вариант - проверять в контроллере при вставке.
foreach ($request->document_num as $n => $doc_num) {
if ($user = User::where('document_num',$doc_num)->first()) {
// Пользователь с таким номером паспорта существует
if ($user->fullname == $request->fullname[$n]) {
// Один и тот же юзер
} else
// Разные юзеры с одинаковыми данными
}
}
}
Можно сделать через FOR, как вариант.
Главное не забыть навешать индексы на эти поля для таблицы Users.
Звучит как похвала
bail для другого предназначен. это правило полностью прекращает валидацию если поле не валидно и не проверяет оставшиеся. по дефолту валидатор при обнаружении ошибки продолжает работать и проверять остальные поля и собирает вообще все ошибки всех полей.
Прекращает валидацию этого поля, но не остальные поля. Так в документации написано.
Попробуйте правило bail (ставится самым первым), может сработает. Честно говоря, ни разу его не использовал.
Ещё вариант
$this->validate($request, [
'email' => 'required_without:tel' . !empty($request->email) ? '|email' : '',
'tel' => 'required_without:email' . !empty($request->tel) ? '|regex:/(01)[0-9]{9}/' : '',
], $messages);