У меня есть модель компании, которая имеет отношения с пользователями. У меня есть сводная таблица с именем game_user, сгенерированная с помощью https://github.com/laracasts/Laravel-5-Generators-Extended путем выполнения php artisan make:migration:pivot companies users
. У меня есть следующая миграция
public function up()
{
Schema::create('company_user', function (Blueprint $table) {
$table->unsignedBigInteger('company_id')->unsigned()->index();
$table->foreign('company_id')->references('id')->on('companies')->onDelete('cascade');
$table->unsignedBigInteger('user_id')->unsigned()->index();
$table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
$table->primary(['company_id', 'user_id']);
});
}
В моей модели компании я сделал функцию сотрудников для отношений
<?php
namespace App\Models;
use App\User;
use Illuminate\Database\Eloquent\Model;
class Company extends Model
{
public function employees()
{
return $this->hasMany(User::class);
}
}
И в моем CompanyController у меня есть следующее
<?php
namespace App\Http\Controllers;
use App\Models\Company;
use Illuminate\Http\Request;
class CompanyController extends Controller
{
public function index($id)
{
return Company::find($id);
}
public function employees($id)
{
return Company::find($id)->employees;
}
}
Но при запросе к нему от почтальона с запросом get.
http://localhost/laravel_applications/myapi/public/api/company/1/employees
Я получаю 500 внутренняя ошибка сервера. Разве Laravel не должен автоматически определять таблицу? Я совершенно уверен, что он не обнаруживает и даже не ищет мою сводную таблицу.
Это мой маршрут, я проверил его, возвращая в виде строки, и это работало просто отлично. Так что маршрут работает.
Route::get('company/{id}/employees', 'CompanyController@employees');