Учебное пособие по Laravel One To Many Relationship

Laravel One To Many Relationship Tutorial — ведущая тема сегодняшнего дня. Отношение «один ко многим» определяется как единая модель, которая владеет несколькими моделями. Например, у человека бесконечное количество мобильных номеров или у сообщения в блоге есть несколько комментариев. Мы можем установить отношения один ко многим , определив функцию в модели. Вы можете перейти по этой ссылке Laravel One To One Eloquent Relationships, чтобы понять отношения.

  Phpnamespace App; используйте Illuminate  Database  Eloquent  Model; class Post extends Model {/** * Получить  комментарии к сообщению в блоге.  */public function comments () {return $ this-> hasMany ('Приложение  Комментарий');  }} 

В приведенном выше примере сообщение в блоге содержит несколько комментариев. Таким образом, мы можем определить функцию как комментарии, а также связать ее с hasMany (). Eloquent автоматически определит правильный столбец внешнего ключа в модели Comment . По соглашению, Eloquent берет имя «змеиный случай» модели-владельца и добавляет к нему суффикс. _id Таким образом, в этом примере Eloquent предполагает, что Внешний ключ в модели Comment равен post_id .

Когда связь определена, мы можем получить доступ к коллекции комментариев, открыв свойство comments .

  php $ comments = App  Post :: find (1) -> comments; foreach ($ comments as $ comment) {//} 

Взаимосвязь один-ко-многим в Laravel с примером.

Мы изучим эту взаимосвязь на следующем примере.

  1. Модель сотрудника
  2. Модель транзакции

У сотрудника несколько транзакций. Таким образом, мы можем определить отношения как Один ко многим. Сначала мы установим проект Laravel , а затем создадим две таблицы. Кроме того, мы разработаем модели и контроллеры, а затем свяжем модели друг с другом.

Шаг 1. Настройте Laravel.

Установите Laravel с помощью следующей команды.

 composer create-project laravel/laravel --prefer-dist OtM 

Теперь настройте базу данных в файле .env .

Кроме того, мы создадим внутри одну модель, схему и файл контроллера. наш проект.

 php artisan make: controller EmployeeControllerphp artisan make: model Employee -m 

Здесь мы увидим, что внутри проекта создано три файла.

После определения схемы файл миграции выглядит следующим образом.

  phpuse Illuminate  Support  Facades  Schema; используйте Illuminate  Database  Schema  Blueprint; используйте Illuminate   Database  Migrations  Migration; класс CreateEmployeesTable расширяет Migration {/** * Запуск миграции. * * @return void */public function up () {Schema :: create ('сотрудники', function (Blueprint $ table) {$ table-> increments ('id'); $ table-> string ('employee_name')  ; $ table-> integer ('количество'); $ table-> timestamps ();});  }/** * Отменить миграции.  * * @return void */public function down () {Schema :: dropIfExists ('сотрудники');  }} 

Теперь запустите эту миграцию с помощью следующей команды.

 php artisan migrate 

Создайте файл представления для ввода сведений сотрудника. Итак, перейдите в resources >> views и внутри этой папки создайте один файл представления с именем

        

Добавить сведения о сотруднике
{{csrf_field ()}}

Теперь добавьте маршруты в файле web.php .

 Route :: get ('employee', 'Employe  eController @ create ') -> name (' employee.create '); Route :: post (' employee ',' EmployeeController @ store ') -> name (' employee.store '); 

Кроме того, обновите маршрут в атрибуте действия файла createEmployee.blade.php .

 

Теперь закодируйте две функции EmployeeController.php .

  phpnamespace App   Http  Controllers; используйте Illuminate  Http  Request; используйте App  Employee; класс EmployeeController расширяет контроллер {общедоступная функция create () {return view ('createEmployee');  } публичное хранилище функций (Request $ request) {$ employee = new Employee;  $ employee-> employee_name = $ request-> get ('имя_работника');  $ employee-> amount = $ request-> get ('employee_salary');  $ employee-> save ();  вернуть «Успех»;  }} 

Он сохранит данные о сотрудниках в базе данных..

Шаг 2. Создайте модель транзакции и контроллер.

Перейдите в свой терминал и введите следующую команду.

 php artisan make: model Transaction -m 

Теперь нам нужно определить схему для модели.

 Schema :: create ('transaction  ', функция (Blueprint $ table) {$ table-> приращения (' id '); $ table-> integer (' employee_id '); $ table-> integer (' transaction_amount '); $ table-> timestamps ();  }); 

Нажмите следующую команду.

 php artisan migrate 

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

 php artisan make: seeder TransactionTableSeeder 

Хорошо, теперь нам нужно написать несколько запросов. для заполнения базы данных. Мы также можем использовать фабрику моделей для генерации данных, но пока мы используем только построитель запросов к БД для ввода некоторых данных. Пожалуйста, убедитесь; у вас есть как минимум три строки Employee в таблице сотрудника.

  phpuse Illuminate  Database  Seeder; class TransactionsTableSeeder extends Seeder {/** * Запустите начальные числа базы данных.  * * @return void */public function run () { DB :: table ('transaction') -> insert (['employee_id' => 1, 'transaction_amount' => 34000, 'created_at' => NOW ()  , 'updated_at' => СЕЙЧАС ()]);   DB :: table ('transaction') -> insert (['employee_id' => 1, 'transaction_amount' => 7000, 'created_at' => NOW (), 'updated_at' => NOW ()]);   DB :: table ('transaction') -> insert (['employee_id' => 2, 'transaction_amount' => 92000, 'created_at' => NOW (), 'updated_at' => NOW ()]);   DB :: table ('transaction') -> insert (['employee_id' => 2, 'transaction_amount' => 54000, 'created_at' => NOW (), 'updated_at' => NOW ()]);   DB :: table ('transaction') -> insert (['employee_id' => 3, 'transaction_amount' => 52000, 'created_at' => NOW (), 'updated_at' => NOW ()]);  }} 

Нам нужно запустить этот файл. Итак, перейдите к файлу DatabaseSeeder.php внутри папки database >> seed .

  Phpuse Illuminate  Database   Seeder; класс DatabaseSeeder расширяет Seeder {/** * Запустить начальные числа базы данных.  * * @return void */public function run () {$ this-> call (TransactionsTableSeeder :: class);  }} 

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

 composer dump-autoload 

Затем нажмите следующая команда.

 php artisan db: seed 

Заполняет данные. Теперь у нас есть две таблицы, в каждой из которых есть данные. Одна таблица — это «Сотрудник», а другая — «Транзакция».

Шаг 3. Определите отношение «один ко многим».

Теперь в Сотрудник. php, определите следующую функцию.

  phpnamespace App; используйте Illuminate  Database  Eloquent  Model; class Employee extends Model {public function transaction () {return $ this-  > hasMany ('Приложение  Транзакция');  }} 

Теперь перейдите в терминал и нажмите следующую команду.

 php artisan tinker 

Tinker — это инструмент командной строки, который позволяет вам взаимодействовать с базой данных и может действовать как реальный объект, и мы можем выполнять с ним различные операции с базой данных.

В tinker вы можете ввести следующий код.

 Employee :: find (1) -> transaction; 

Вы можете увидеть все связанные записи Employee с идентификатором 1, отображаемые из модели Транзакция.

Итак, это основное использование отношений Один ко многим .

Шаг 4: Обратное отношений.

Точно так же мы можем определить функцию в модели Transaction.php .

   phpnamespace App; используйте Illuminate  Database  Eloquent  Model; класс Transaction расширяет модель {public function employee () {return $ this-> ownTo ('App  Employee');  }} 

Снова перейдите к tinker .

 Transaction :: find (2) -> employee-> amount; 

Вы можете увидеть сумму. Вот как мы можем связывать друг друга через Relationship в Laravel.

Наконец, наш Laravel Учебник по отношениям «один ко многим» окончен. Спасибо за чтение.

Оцените статью
nanomode.ru
Добавить комментарий