Что у меня есть:
Таблицы в БД:
Schema::create('orders', function (Blueprint $table) {
$table->bigIncrements('id');
$table->unsignedBigInteger('primary_person');
$table->unsignedBigInteger('secondary_person');
});
Schema::create('persons', function (Blueprint $table) {
$table->bigIncrements('id');
$table->string('first_name', 255);
$table->string('last_name', 255);
});
Модель:
class Order extends Model
{
use CrudTrait;
protected $table = 'orders';
protected $fillable = [
'primary_person',
'secondary_person',
];
public function primaryPerson()
{
return $this->hasOne(Person::class, 'id', 'primary_person');
}
public function secondaryPerson()
{
return $this->hasOne(Person::class, 'id', 'secondary_person');
}
}
Что нужно сделать:
На странице изменить порядок Я хочу отобразить информацию о двух лицах:
- Имя Первичного лица
- Фамилия Первичного лица
- Имя вторичного человека
- Фамилия второстепенного лица
Что я сделал:
В OrderCrudController.php добавлено:
$this->crud->addFields([
[
'label' => 'First Name of Primary person',
'type' => 'text',
'name' => 'first_name',
'entity' => 'primaryPerson',
'model' => 'App\Models\Person',
],
[
'label' => 'Last Name of Primary person',
'type' => 'text',
'name' => 'last_name',
'entity' => 'primaryPerson',
'model' => 'App\Models\Person',
],
[
'label' => 'First Name of Secondary person',
'type' => 'text',
'name' => 'first_name',
'entity' => 'secondaryPerson',
'model' => 'App\Models\Person',
],
[
'label' => 'Last Name of Secondary person',
'type' => 'text',
'name' => 'last_name',
'entity' => 'secondaryPerson',
'model' => 'App\Models\Person',
]
]);
Что я получу:
Только два последних поля (дополнительная информация о человеке).
Основная проблема:
Мне не удалось отобразить поля с тем же «именем» , потому что «имя» - атрибут (столбец в базе данных), который также станет именем вход.
В столбцах эта ситуация обрабатывается атрибутом "ключ" . Но в полях это не работает.