Laravel коллекция отношений многие ко многим пуста - PullRequest
0 голосов
/ 21 января 2020

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

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

public function orders()
{
    return $this->belongsToMany(Service::class)->withTimestamps();
}

Сервисная модель

public function clients()
{
    return $this->belongsToMany(Client::class)->withTimestamps();
}

Запрос отношения всегда пуст

$client = Client::with('orders')->firstOrFail();

Миграция моей таблицы;

Schema::create('client_service', function (Blueprint $table) {
    $table->bigIncrements('id');
    $table->unsignedBigInteger('client_id');
    $table->unsignedBigInteger('service_id');
    $table->timestamps();
});

Я не вижу, как связь пуста, используя вышеописанную настройку "многие ко многим".

Журнал запросов

array:2 [▼
  0 => array:3 [▼
    "query" => "select * from `clients` limit 1"
    "bindings" => []
    "time" => 0.59
  ]
  1 => array:3 [▼
    "query" => "select `services`.*, `client_service`.`client_id` as `pivot_client_id`, `client_service`.`service_id` as `pivot_service_id`, `client_service`.`created_at` as `pivot_created_at`, `client_service`.`updated_at` as `pivot_updated_at` from `services` inner join `client_service` on `services`.`id` = `client_service`.`service_id` where `client_service`.`client_id` in (1) ◀"
    "bindings" => []
    "time" => 1.05
  ]
]

1 Ответ

1 голос
/ 21 января 2020

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

Schema::create('client_service', function (Blueprint $table) {
    $table->bigIncrements('id');

    $table->unsignedBigInteger('client_id');
    $table->foreign('client_id')->references('id')->on('clients')->onDelete('cascade');

    $table->unsignedBigInteger('service_id');
    $table->foreign('service_id')->references('id')->on('services')->onDelete('cascade');

    $table->timestamps();
});
...