Laravel по-русски

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

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

#1 Re: Laravel 5.x » Наследование модели » 01.08.2020 14:59:05

В нете нашел такую рекомендацию:

Model::unguard();

// User::create(['some_protected_attribute'=>'some value']);

Model::reguard();

#3 Re: Laravel 6/7/8/9 » При отправке формы данные полей приходят не в выбранном порядке. » 01.08.2020 14:53:29

В форме указываешь каждого инпута, например name="car".
Затем в экшене пишешь:

$data = request()->validate([
    'car' => '' // это значит, что у валидации нет требований никаких к полю
]);

Далее получаешь данные $data['car'];

Можно без валидации:
$car = request('car');

В чем собственно затык? Поля не прописаны?(name=)??

#4 Re: Laravel 6/7/8/9 » Query Builder - Функции замыкания » 01.08.2020 14:47:42

Суть такая, что ты можешь расширить область поиска.

Например.

Product::where(function ($query) {
    $query->where('color', 'red');
    $query->where('size', '20);
})-get();

Можно рассмотреть примерно так:
Product::where(color - red И size - 20)->get();

Да можно без ретурн. Если есть вопросы пиши.

#5 Вакансии » Ищу ларавел разработчиков для взаимопомощи » 01.08.2020 14:43:25

JohnnyDoe
Ответов: 1

Привет, ищу всех желающих ларавел разработчиков для взаимопомощи, кто готов и любит делиться опытом и не прочь получить его.
Оставляйте свои контакты(скайп), я с вами свяжусь. Спасибо.

#7 Общий раздел » Фабрика не работает во время сида с belongsTo » 02.06.2020 16:43:16

JohnnyDoe
Ответов: 0

Здравствуйте. Перерыл интернет, не понимаю почему не работает коллбэк фабрики.

Есть три модели - пост, категория, тэг.
У поста есть два метода:

   
 public function category()
    {
        return $this->belongsTo(Category::class);
    }

    public function tags()
    {
        return $this->belongsToMany(Tag::class);
    }

В фабрике прописал это:

$factory->define(Post::class, function (Faker $faker) {
    return [
        'title' => $faker->title,
        'author_id' => 3,
        'category_id' => 3,
        'description' => $faker->text,
        'content' => $faker->text,
    ];
});

$factory->define(Category::class, function (Faker $faker) {
    return [
        'title' => $faker->title,
    ];
});

$factory->define(Tag::class, function (Faker $faker) {
    return [
        'title' => $faker->title,
    ];
});

В ране сида прописал это:

 factory(Post::class, 10)->create()->each(function (Post $post) {
            $post->category()->save(factory(App\Category::class)->make());
        });

И тут вылезает ошибка, что у belongsTo нет метода save().
А в случае с тегами:

$post->tags()->save(factory(App\Tag::class)->make());

Всё прекрасно работает, там belongsToMany
Не понимаю, что делать.
Взял это пособие в интернете) В оф документации в фабрике что-то не вижу конкретностей и деталей на этот счет(

#8 Re: Общий раздел » Совершенно непредсказуемое поведение laravel+xDebug+phpStorm » 02.06.2020 10:46:08

Может как-то с кэшированием связано или сессиями? Пробовали этот момент рассматривать?

#9 Re: Общий раздел » Несколько вопросов по маршрутизации: URL с одним сегментом и пр. » 02.06.2020 10:42:20

Добрый день, если я правильно понял
У роутов есть возможность вложить переменную в запрос
blog/{id}, и передать id в BlogController@index, в экшне public function index($id){}
Либо там же вызвать функцию замыкания и передать туда $id.
В целом, я так понимаю, ваш вопрос можно оптимизировать до
Можно ли переменную {id} подставить в вызванный контролллер, например idController@index, верно? Попробуйте так поискать

Вообще, если явно не указать get запрос в роуте, а он есть, то он будет автоматически добавляться в урл.
В любом случае, можно добавить в роут ?page={id} и передать также id в контроллер.


Первый вопрос про маршрутизацию не совсем понятен, вернее его сложность) Обычная практика создавать модели, в ларавел есть инструмент, чтобы легко обойтись от сложных запросов, и вы можете все эти связи реализовать в модели.  Зачем вам выгружать логику? Не совсем понятно:)

#10 Re: Общий раздел » Добавление\удаление столбцов в миграции » 02.06.2020 10:28:27

doctrine/dbal — раз написано в доке, значит нужна ) Другое дело что она возможно и без явного добавления уже в твоих зависимостях. Если заглянуть в composer.lock, можно обнаружить мноооого вторичных зависимостей.

Блэээн, как же я не догадался, хотя подозревал, что скорее всего так уже давно сделано) Спасибо за ответ!)

#11 Re: Общий раздел » Добавление\удаление столбцов в миграции » 01.06.2020 10:11:32

nailfor, artoodetoo

Извиняюсь, просто я еще и код не писал, а в документации читал, там написано про зависимость: doctrine/dbal
Поэтому я и спросил. Так она нужна или нет? Я уже попробовал и удалять и изменять, но она у меня стоит, и всё работает. Вот текст с документации:

Удаление столбцов
Для удаления столбца используйте метод dropColumn на построителе структур. Перед удалением столбцов из базы данных SQLite вам необходимо добавить зависимость doctrine/dbal в ваш файл composer.json и выполнить команду composer update для установки библиотеки:

Schema::table('users', function (Blueprint $table) {
    $table->dropColumn('votes');
});

#12 Общий раздел » Добавление\удаление столбцов в миграции » 31.05.2020 10:42:48

JohnnyDoe
Ответов: 5

Здравствуйте
Почитал документацию, если с добавлением столбцов я всё понял, то с удалением не совсем. Получается, мало создать миграцию с Schema::table, надо еще устанавливать некую библиотеку, которая реализует удаление столбцов? Как грамотно на практике реализовывать такую задачу? Спасибо большое!!!

#13 Re: Общий раздел » Таблица "связей" » 31.05.2020 10:41:10

Нет, не получается.
В таблицу связей можно накидать теги в любой момент после создания записи в постах.
Это можно сделать сразу, можно через любой промежуток времени после.

Всё теперь всё понял, спасибо большое!

#14 Re: Общий раздел » Таблица "связей" » 29.05.2020 21:06:28

Хм, получается, когда мы добавляем данные, надо также добавлять и в эту таблицу данные в тот же самый момент?

#15 Re: Общий раздел » Таблица "связей" » 29.05.2020 17:17:15

Таким образом создать одному посту несколько разных тегов будет невозможно.

Ааа то есть, благодаря такой таблице, можно будет уже несколько тегов назначить?

Где можно посмотреть примеры реальных таблиц, их архитектура? А-то я чем больше изучаю, тем больше понимаю. что вообще не шарю.

#16 Re: Общий раздел » Таблица "связей" » 29.05.2020 11:38:56

@JohnnyDoe, это не из-за Laravel, а происходит из особенностей реляционных баз данных. Многие-ко-многим в РСУБД делаются через таблицу-связку, иначе говоря, pivot. Ларавель только предоставляет доступ к БД. Если в базе должна быть таблица, значит должна быть и миграция чтобы её создать.

Совет: если в миграции для таблицы-связки ты объявишь уникальный составной индекс на пару полей (post_id, tag_id), то избежишь потенциальных проблем с дублированием записей.

Ого очень признателен за подробный ответ. Может есть где почитать об этом?
Получается схема, если я делаю таблицу пост и там создаю ключ tag_id, и потом во время добавления поста ставлю туда условие "вставать в поле tag_id, где tag_id = id(тут переменная айдишника тэга из таблицы tag)", так не пойдёт? Или это считается дурным тоном и непрактично?

#17 Общий раздел » Таблица "связей" » 28.05.2020 21:35:48

JohnnyDoe
Ответов: 9

Здравствуйте, я новичок. Многократно видел такую ситуацию. Например. Имеем блог. Создаем миграцию для поста(стандартную), затем миграцию для тэгов. И нужно еще создать миграцию связи типа "Пост-тег". Только я не понимаю, что именно мы решаем таким образом и чем это удобно? Если миграцию поста и тэга я понимаю, что к чему, тов миграции пост-тег, вообще не понимаю, что там происходит и зачем она нужна.

Спасибо большое за внимание!

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