Если я правильно вас понимаю, ваши отношения должны выглядеть примерно так:
Service.php
public function cities()
{
return $this->belongsToMany(City::class);
}
City.php
public function services()
{
return $this->belongsToMany(Service::class);
}
public function state()
{
return $this->belongsTo(State::class);
}
Если возможно, я придерживайтесь по умолчанию и переименуйте сводную таблицу в city_service
State.php
public function cities()
{
return $this->hasMany('App\City');
}
public function country()
{
return $this->belongsTo('App\Country');
}
Country.php
public function states()
{
return $this->hasMany('App\State');
}
[1118 ] Чтобы получить желаемый результат, вы должны использовать аксессоров
City.php
public function getState ()
{
return $this->state->name;
}
public function getCountry ()
{
$country = Country::findOrFail($this->state->country_id);
return $country->name;
}
Теперь это немного дорого, но hasManyThrough () не будет работать здесь, потому что вам нужны обратные отношения. Это было предложено , но не принято. Есть пакет , но не уверен, что он стабилен. Кажется, заброшенный.
В любом случае, вы сможете запросить это и получить желаемый результат с помощью:
$services = Service::with('cities')->get();
См. также библиотеку Ultraviolet.
Ультрафиолетовое излучение является механизмом подсветки синтаксиса на основе Textpow. Так как это использует файлы синтаксиса Textmate, это предлагает из подсветки синтаксиса поля больше чем для 50 языков и 20 тем.
Ультрафиолетовое излучение является одновременно автономной утилитой командной строки и библиотекой Ruby.
Я использую Coderay (см. его в действии у основания этой статьи),
Не уверенный, сколько (если таковые имеются) зависимости это имеет.