Laravel-adminのformでリレーションデータをdisplayする方法

Laravel-admin の form メソッド内で、リレーションした Model のデータを表示する方法です。

今回のケースでは、記事編集者の情報は admin_users テーブルに

記事の情報は articles テーブルにあり、articles テーブルに admin_user_id カラムがある状態です。

そこで、form メソッドで記事編集者の名前を表示したいという想定です。

まずは、Article モデルと AdminUser モデルを作成します。

次に、Article モデルにリレーションを定義します。

public function admin_user()
{
    return $this->hasOne(AdminUser::class, 'id', admin_user_id');
}

form では、Article クラスを引数に form インスタンスを生成し、

display メソッドの第一引数に、リレーションのメソッドとドットでカラムをつなぎます

protected function form()
{
    $form = new Form(new Article());

    $form->display('admin_user.username', __('記事編集者'));

    return $form;
}

これで、記事の編集画面に記事編集者の表示ができます。

- PR -