Для довольно простых решений вы можете напрямую:
Во-первых, вам нужно добавить модель SenatorAttributes
внутри модели Person
. Это можно сделать следующим образом:
class Person extends Model
{
protected $table = 'persons';
protected $guarded = ['id'];
public function senator_attributes()
{
return $this->hasMany(SenatorAttributes::class, 'persons_id'); // or you can use hasOne if person model is supposed to only have one single senator attribute.
}
}
Теперь загружаем атрибуты сенатора для каждого человека.
Solution 1
, с нетерпеливой (ранней / отчаянной) Загрузка:
$persons = Person::with('senator_attributes')->get();
Solution 2
, загрузка по требованию:
$persons = Person::all();
foreach($persons as $person) {
$senator_attribures = $person->senator_attributes;
// write your logic here...
}
Решение 1 подойдет пока вы не загружаете все строки во время выполнения. Если вы планируете загружать сотни / тысячи моделей, рассмотрите фрагменты как решение и используйте с ним активную загрузку.
Узнайте больше о Laravel Eloquent Relationships здесь .
Теперь прочтите следующее, если вас интересуют лучшие практики.
Я не хочу показаться любопытным, но лично я следую следующим основным правилам при работе над любым проектом.
Имя таблицы всегда должно быть во множественном числе и модель имя должно быть в единственном числе. Например, таблица persons
будет иметь модель Person
.
Внешние ключи всегда должны быть в singular form of referenced table
+ referenced column of the referenced table
. Например, если вы wi sh добавляете ссылку person
в таблицу senator_attributes
, вы должны добавить столбец person_id
в senator_attributes
таблицу.
Факт, Laravel поддерживает это соглашение об именах, прежде всего, вы экономите свое время и поддерживаете единообразие и практику в командах и проектах.