Добрый день!Я думаю, что я делаю что-то не так или я неправильно понимаю Eloquent практики.
У меня есть три таблицы.
- orders {city, county}
- city {id, имя}
- графства {id, имя}
Я выполняю запросы к этим таблицам, используя Laravel Eloquent отношения один-ко-многим-обратным.orders.city
содержит один идентификатор cities
, а orders.county
содержит один идентификатор counties
.Ниже приведен код моих моделей.
Приложение \ Заказы
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Orders extends Model
{
/*
* Table name
*/
protected $table = 'orders';
/*
* Get county
*/
public function county()
{
return $this -> hasOne('App\Counties', 'id', 'county');
}
/*
* Get city
*/
public function city()
{
return $this -> hasOne('App\Cities', 'id', 'city');
}
}
Приложение \ Графства
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Counties extends Model
{
protected $table = 'account_county';
public $timestamps = false;
/*
* Counties relationship
*/
public function county()
{
return $this -> belongsTo('App\Orders', 'county', 'id');
}
}
App \ Cities
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Cities extends Model
{
protected $table = 'account_city';
public $timestamps = false;
/*
* City relationship
*/
public function city()
{
return $this -> belongsTo('App\Orders', 'city', 'id');
}
}
Когда я выполняю в Тинкере следующее: $order = App\Orders::with(['city', 'county']) -> first();
.... Я получаю следующий ответ:
App\Orders {#3042
county: App\Counties {#3041
id: 23,
name: "Argeș",
},
city: App\Cities {#3046
id: 6924,
name: "Argeșelu",
},
}
Теперь, когда я запускаю следующий код: $order -> city
, я получаю следующий ответ:
"6924"
Когда я выполняю следующий код, однако: $order -> City
Я получаю всю коллекцию:
App\Cities {#3046
id: 6924,
name: "Argeșelu",
},
Почему мне нужно прописать первую букву свойства, чтобы получить экземпляр коллекции?В документации говорится, что я должен использовать динамическое имя свойства напрямую: $order -> city
однако в моем случае это возвращает необработанный идентификатор строки, а не экземпляр коллекции.Я что-то пропустил?Я обеспокоен производительностью и хорошими практическими соображениями.Прошу прощения, если это плохой вопрос или он уже был объяснен где-то еще.