ORMでのリレーションを設定する
ORMで作成したテーブルと紐づいたテーブルのデータを取得するようにするためには、app/Modelsフォルダにある対象のモデル名のファイルで設定する必要があります。
対象のモデル名のファイルがない場合は、コマンドプロンプトでアプリケーションのルートに移動して
と入力することで作成することができます。
下の例ではDepartment(部署)1に対してEmployee(社員)多の1対多でのリレーションで設定していきます。
まず紐づけるテーブル名のメソッドを作成し、Depertment側では以下のようになるようにします。
$this->hasMany(Employee::class)の部分で自クラス1に対してEmployeeが多側であるという設定をしています。
Employee側では、
と記入し、自クラス多に対して1のDepartmentがあるという設定をしています。
対象のモデル名のファイルがない場合は、コマンドプロンプトでアプリケーションのルートに移動して
php artisan make:model テーブル名
と入力することで作成することができます。
下の例ではDepartment(部署)1に対してEmployee(社員)多の1対多でのリレーションで設定していきます。
まず紐づけるテーブル名のメソッドを作成し、Depertment側では以下のようになるようにします。
class Depertment extends Model
{
use HasFactory;
public function employee(){
return $this->hasMany(Employee::class);
}
}
{
use HasFactory;
public function employee(){
return $this->hasMany(Employee::class);
}
}
$this->hasMany(Employee::class)の部分で自クラス1に対してEmployeeが多側であるという設定をしています。
Employee側では、
class Employee extends Model
{
use HasFactory;
public function department(){
return $this->belongsTo(Department::class);
}
}
{
use HasFactory;
public function department(){
return $this->belongsTo(Department::class);
}
}
と記入し、自クラス多に対して1のDepartmentがあるという設定をしています。