У меня есть модель, она принадлежит другой модели, эта модель относится к третьей модели, и я хочу, чтобы красноречивый метод связал первую модель с третьей.
Тем не менее, похоже, что метод applyToThrough (или hasOneThrough) отсутствует. Я уже пытался связать несколько методов belongsTo
, но это не сработало (Call to undefined method Illuminate\Database\Query\Builder::belongsTo()
). Любые идеи?
Вот пример моделей:
// The first model
// Schema: this model has a middle_id column in the database
class Origin extends Eloquent {
public function middle()
{
return $this->belongsTo('Middle');
}
}
// The second model
// Schema: this model has a target_id column in the database, but NOT an origin_id column
class Middle extends Eloquent {
public function target()
{
return $this->belongsTo('Target');
}
}
// The third model
class Target extends Eloquent {
}
Что бы я хотел сделать, добавьте что-то вроде следующего метода в модель Origin
:
// A relationship method on the first "origin" model
public function target()
{
// First argument is the target model, second argument is the middle "through" model, third argument is the database column in middle model that it uses to find the target model, or soemthing
return $this->hasOneThrough('Target', 'Middle', 'target_id');
}
Чтобы я мог использовать $originInstance->target->title
и т.д.