У меня проблемы с отношениями Laravel 5. У меня есть 2 модели Crew
и Event
с соответствующими таблицами crews
и events
. У экипажей много событий, а в мероприятиях есть один экипаж. Я создал свои модели и миграции следующим образом:Laravel 5 - Доблестные отношения, возвращающие пустую коллекцию
схемы:
//Crews
Schema::connection('scheduling')->create('crews', function ($table) {
$table->increments('id');
$table->text('name');
$table->boolean('solo');
$table->boolean('active');
$table->text('phone');
});
//Events
Schema::connection('scheduling')->create('events', function ($table) {
$table->increments('id');
// ...
$table->integer('crew_id')->unsigned();
$table->foreign('crew_id')->references('id')->on('crews');
$table->text('notes');
// ...
$table->timestamps();
});
Модели:
namespace App\Models\Scheduling;
use Illuminate\Database\Eloquent\Model;
class Crew extends Model {
public $connection = "scheduling";
public $table = "crews";
public function events() {
return $this->hasMany('App\Models\Scheduling\Event', 'id', 'crew_id');
}
public static function active() {
return Crew::where('active', 1)->get();
}
}
namespace App\Models\Scheduling;
use Illuminate\Database\Eloquent\Model;
class Event extends Model {
public $connection = "scheduling";
public $table = "events";
public function crew() {
return $this->belongsTo('App\Models\Scheduling\Crew', 'crew_id', 'id');
}
}
Если я бегу Crew::find(102)->events;
я в конечном итоге с пустой коллекции. Если я запустил Events::where('crew_id', 102)->get();
, я в итоге приведу список событий, которые я ожидал. Любая идея, что я делаю неправильно здесь?
Первоначально я использовал его как ваш предложенный метод, но это не работало для меня, поэтому я попробовал то, что у меня есть. Я попробую еще раз через несколько минут, чтобы быть уверенным. –
Ну, я не знаю, что это за волшебство вуду, но его работа. Я клянусь, что у меня была такая настройка, как изначально, но, должно быть, у меня было что-то еще не так. В любом случае, спасибо! –