Laravel – гайд по выживанию. Nulls

Читать онлайн.
Название Laravel – гайд по выживанию
Автор произведения Nulls
Жанр
Серия
Издательство
Год выпуска 2023
isbn



Скачать книгу

базы данных обнаруживается новая запись.

      Впечатляет, не правда ли? Однако вместо того, чтобы вручную указывать имя, силу и здоровье, Laravel позволяет использовать более лаконичный подход:

      <?php

      use App\Zombie;

      use Illuminate\Http\Request;

      Route::post('/admin/zombies/create', function(Request $request){

      // instantiate a new zombie using posted data

      $zombie = Zombie::create($request->all());

      echo 'Zombie Created';

      });

      При попытке использовать этот маршрут может возникнуть ошибка 'MassAssignmentException'. Это означает, что мы пытаемся выполнить массовое назначение классу "Зомби", не указав допустимые поля. В Laravel такая защита предусмотрена по умолчанию.

      Чтобы разрешить массовое присвоение для атрибутов имени, силы и здоровья в нашем классе Zombie, просто добавьте:

      protected $fillable = ['name', 'strength', 'health'];

      Переделанный класс выглядит следующим образом:

      <?php namespace App\Models;

      use Illuminate\Database\Eloquent\Model; class Zombie extends Model {

      protected $table = 'zombies';

      protected $fillable = ['name', 'strength', 'health'];

      }

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

      Предположим, что мы создали еще одного зомби:

      Имя: Ted Manwalking

      Strength: Слабый

      Здоровье: 90

      Тогда в нашей базе данных появятся следующие записи:

      Eloquent значительно облегчает процессы создания, чтения, обновления и удаления записей в базе данных. Далее мы рассмотрим отношения, облегчающие связывание данных между таблицами базы данных.

      4. Модельные отношения

      Разработчик-зомби борется с отношениями, но разработчик Laravel превосходно пользуется преимуществами отношений в базе данных.

      Зомби не хватает интеллекта для создания значимых отношений –связей между таблицами. В отличие от них, класс Eloquent в Laravel позволяет без особых усилий устанавливать и использовать отношения между таблицами.

Модельные отношения

      Отношения связывают данные между таблицами. Представьте, что вы ведете блог с таблицами 'posts' и 'comments'.

      Эти таблицы взаимосвязаны. У поста может быть МНОГО КОММЕНТАРИЕВ, в то время как комментарий всегда будет относиться к конкретному посту. Это называется отношениями.

      Давайте создадим еще одну таблицу с именем weapons:

      Таблица weapons:

      Обратите внимание на столбец 'zombie_id'. Он ссылается на столбец 'id' в таблице Zombies. Эта связь, известная как внешний ключ (Foreign Key), возникает, когда строка одной таблицы однозначно идентифицирует строку другой таблицы. Этот внешний ключ обеспечивает надежную связь между таблицами Weapons и Zombies.

      Рассмотрим два вида оружия в нашей базе данных, связанных с зомби:

      Выше вы видите, что мы включили "Топор" для зомби с идентификатором 2 и "Дробовик" для зомби с идентификатором 1.

      Теперь сформулируем модель оружия для связи с таблицей оружия. Путь к ней – app/Models/Weapon.php:

      <?php namespace App\Models;

      use Illuminate\Database\Eloquent\Model; class Weapon extends Model {

      protected $table = 'weapons';

      }

      Для отображения информации о зомби, включая его оружие, мы можем использовать этот код: