Nulls

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


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

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

      Впечатляет, не правда ли? Однако вместо того, чтобы вручную указывать имя, силу и здоровье, 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';

      }

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