Доступ к данным с использованием отношений Laravel

Я хочу получить доступ к данным в функции контроллера, используя отношения на Laravel.

Сначала я объясню свой код:

У меня есть 3 таблицы, проекты, клиент и клиент_проект.

В настоящий момент клиент_проект не имеет никаких отношений, я просто добавляю его вручную.

Теперь я хочу использовать отношения на laravel, но это немного запутывает (по крайней мере для меня).

Я думаю, что это не слишком важно для кода проектов и таблицы клиентов, просто имеет идентификатор, как первичный ключ, и некоторые поля больше.

Моя миграция client_project выглядит вот так:

<?php use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; class CreateClientProjectTable extends Migration { /** * Run the migrations. * * @return void */ public function up() { Schema::create('client_project', function(Blueprint $table) { $table->increments('id'); $table->integer('client_id'); $table->integer('project_id'); $table->timestamps(); }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::drop('client_project'); } } 

Модель Client_Project выглядит вот так:

 <?php namespace App\Models; use Illuminate\Database\Eloquent\Model; class Client_Project extends Model { protected $fillable = ['client_id','project_id']; public $table = 'client_project'; public function clients() { return $this->hasMany('App\Models\Project'); } public function projects() { return $this->hasOne('App\Models\Client'); } } 

Один клиент может иметь более одного проекта, но один проект создается только одним клиентом. Я считаю, что отношения объявлены хорошими.

(Сначала я думаю, что с отношениями мне не нужно делать таблицу client_project), но я думаю, что это неправильная идея. Я тоже хочу сделать это с этой таблицей.

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

App\Models\Project::find(1) , как говорит doc laravel.

Функция такова:

 $client = new Client(); $client->name = $request->input("nameClient"); $client->slug = $request->input("slugClient"); $client->priority = $request->input("priorityClient"); $client->save(); $client_project = new Client_Project(); $client_project->client_id = App\Models\Client::max('id'); $client_project->project_id = App\Models\Projects::max('id'); $client_project->save(); 

Работает часть клиента. Я просто принимаю значение некоторых входов, и я создаю новый.

Проблема заключается в $ client_project. Я хочу сделать его динамичным. Я создаю клиента и проект, а мой код получает последний (более высокий идентификатор) и последний (более большой идентификатор) проектов. Как я могу получить к ним доступ с помощью отношений? Возможно, нужно изменить миграцию client_project и поместить некоторый ключ в project_id или client_id?

Если вам нужна дополнительная информация, пожалуйста, спросите об этом. Любая помощь будет оценена!

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

Модель клиента

 <?php namespace App\Models; use Illuminate\Database\Eloquent\Model; class Client extends Model { public function projects() { return $this->belongsToMany(Project::class,'client_project'); } } 

Модель проекта

 <?php namespace App\Models; use Illuminate\Database\Eloquent\Model; class Projects extends Model { public function client() { return $this->belongsToMany(Client::class,'client_project'); } } ?> 

Для сохранения идентификатора проекта используйте следующий способ в методе контроллера

  $client = new Client(); $client->name = $request->input("nameClient"); $client->slug = $request->input("slugClient"); $client->priority = $request->input("priorityClient"); $client->save(); $project = new Project(); //include fields as per your table $project->save(); $client->projects()->attach($project->id); 

,