table->search( conditions: $conditions, columns: $columns, sorts: $sorts, withJoins: $withJoins, page: $page, perPage: $perPage, paginate: $paginate, limit: $limit, ); // dd($result); // IDをキーとして再構築 if ($reorder) { // dd(true); $list = $result; $result = []; foreach ($list as $key => $value) { $result[$value['mtb_facility_id']] = $value; } } // dd($result); return $result; } /** * ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――― * getFacility * ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――― */ public function getFacility( array $conditions, array $columns = ['*'], array $sorts = [], bool $withJoins = false ): ?array { return $this->table->first( conditions: $conditions, columns: $columns, sorts: $sorts, withJoins: $withJoins ); } /** * ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――― * createFacility * ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――― */ public function createFacility( array $data ): int { // dd($data); return $this->table->create($data); } /** * ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――― * updateFacility * ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――― */ public function updateFacility( array $conditions, array $data ): int { // dd($data); $data['updated_at'] = $data['updated_at'] ?? now(); return $this->table->update($conditions, $data); } /** * ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――― * deleteFacility * ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――― */ public function deleteFacility( array $conditions ): int { // dd($conditions); return $this->table->delete($conditions); } /** * ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――― * searchFacilityList * ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――― * 汎用:一覧取得(ページング可・JOIN可) * - ページング指定時:LengthAwarePaginator * - 未指定時:配列(Collectionを配列化) */ public function searchFacilityList( array $conditions = [], array $sorts = ['mtb_facility_id' => 'desc'], ?int $page = 1, ?int $perPage = 100, array $columns = [ 'mtb_facility.*', // mtb_maker 'mtb_maker.maker_name as maker_name', // mtb_model 'mtb_model.model_number as model_number', // mtb_charger 'mtb_charger.charger_name as charger_name', // mtb_drive_seat 'mtb_drive_seat.drive_seat_name as drive_seat_name', // mtb_drive_seat 'mtb_drive_system.drive_system_name as drive_system_name', // mtb_fuel 'mtb_fuel.fuel_name as fuel_name', // mtb_model_name 'mtb_model_name.model_name as model_name', // mtb_transmission 'mtb_transmission.transmission_name as transmission_name', ], ?int $limit = null, bool $withJoins = true, ) { return $this->table->search( conditions: $conditions, sorts: $sorts, page: $page, perPage: $perPage, columns: $columns, limit: $limit, withJoins: $withJoins ); } /** * ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――― * searchFacility * ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――― * 汎用:単一レコード取得(JOIN可) * - 条件DSLを受け取り、最初の1件を配列で返す(なければ null) * - デフォルトで maker / model / charger / drive_xxx を JOIN */ public function searchFacility( array $conditions, array $columns = [ // mtb_facility 'mtb_facility.mtb_facility_id', 'mtb_facility.mtb_facility_code', 'mtb_facility.facility_name', 'mtb_facility.bed_count', 'mtb_facility.palliative_outpatient_name', 'mtb_facility.lng', 'mtb_facility.lat', 'mtb_facility.is_cancer_coop', 'mtb_facility.mtb_category1_id', 'mtb_facility.mtb_category2_id', 'mtb_facility.mtb_secondary_medical_area_id', 'mtb_facility.mtb_ward_category_id', // mtb_category1 'mtb_category1.category1_name', // mtb_category2 'mtb_category2.category1_name', // mtb_secondary_medical_area 'mtb_secondary_medical_area.secondary_medical_area_name', // mtb_ward_category 'mtb_ward_category.ward_category_name', // mtb_pref 'mtb_pref.pref_name', ], array $sorts = [], bool $withJoins = true ): ?array { return $this->table->first( conditions: $conditions, columns: $columns, sorts: $sorts, withJoins: $withJoins ); } }