belongsToManyRelation не работает в laravel 8

#laravel #eloquent #laravel-8 #laravel-relations

#laravel #красноречивый #laravel-8 #laravel-отношения

Вопрос:

У меня есть отношение «многие ко многим», которое правильно вставляет данные, но когда я пытаюсь получить данные, оно не дает мне никаких данных.

одна таблица — босс, а другая — рабочие

Migration

 <?php



public function up()
{
Schema::create('boss_worker', function (Blueprint $table) {
$table->id();
$table->unsignedBigInteger('worker_id');
$table->unsignedBigInteger('boss_id');
$table->timestamps();
});
}


 

Отношение модели босса

   public function workers()
    {
        return $this->belongsToMany(AppModelsAdminWorker::class,'boss_worker');
    }
 

Как я пытаюсь получить данные

 public function index()
{

$boss = Boss::find(1);
dd($boss->workers);

}
 

Как я вставляю данные

 
$input = $request->all();
$workers = $input['workers'];
$input['workers'] = implode(',', $workers);

$boss = Boss::where('staff_id',$request->boss)->first();

$worker_gangs = $boss->workers()->sync($workers);

 

Он не извлекает никаких данных

Комментарии:

1. Можете ли вы показать дамп нашего $input['workers'] при вставке данных?

Ответ №1:

использовать

 public function index()
{

$boss = Boss::with('workers')->find(1);

}
 

Комментарии:

1. Спасибо за предоставленный ответ. Не могли бы вы отредактировать свой ответ, чтобы включить объяснение вашего кода? Это поможет будущим читателям лучше понять, что происходит, и особенно тем членам сообщества, которые новички в языке и пытаются понять концепции.

Ответ №2:

Когда вы вызываете связь из модели, к которой вы обращаетесь IlluminateDatabaseEloquentBuilder , вы можете получить доступ и применить любой фильтр или запрос с помощью построителя запросов, чтобы извлечь данные из этой связи, вы должны использовать эти методы для выполнения запроса

 ->get();
->first();
 

ваш код должен быть:

 $boss = Boss::find(1);
$workers = $boss->workers()->get();
dd($workers);
 

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

 $boss = Boss::with('workers')->find(1);
dd($boss->workers);