'integer', 'operator_id' => 'integer', 'created_at' => 'datetime', 'updated_at' => 'datetime' ]; // 主キーが自動増分でない場合はfalseに設定 public $incrementing = false; // タイムスタンプ管理しない場合はfalseに設定 public $timestamps = false; /** * 売上集計との関連 * * @return \Illuminate\Database\Eloquent\Relations\HasMany */ public function earningsSummaries() { return $this->hasMany(EarningsSummary::class, 'psection_id', 'psection_id'); } /** * 定期契約との関連 * * @return \Illuminate\Database\Eloquent\Relations\HasMany */ public function regularContracts() { return $this->hasMany(RegularContract::class, 'psection_id', 'psection_id'); } /** * アクティブな車種区分一覧を取得 * * @return \Illuminate\Database\Eloquent\Collection */ public static function getActivePsections() { return self::orderBy('psection_id')->get(); } /** * 車種区分名で検索 * * @param string $subject 車種区分名 * @return Psection|null */ public static function findBySubject(string $subject): ?Psection { return self::where('psection_subject', $subject)->first(); } /** * 文字列表現 * * @return string */ public function __toString(): string { return sprintf( 'Psection[ID:%d, Subject:%s]', $this->psection_id, $this->psection_subject ); } // 新規作成時にoperator_idを自動設定(operator_idカラムがある場合のみ) public static function boot() { parent::boot(); self::creating(function (Psection $model) { // ログインしている場合のみセット if (\Auth::check()) { $model->operator_id = Auth::user()->ope_id; } }); } // 車種区分リストを取得(プルダウン用) public static function getList() { return self::orderBy('psection_id')->pluck('psection_subject', 'psection_id'); } }