*/ public function get(array $condition): Collection { $table = Shop::getBuilder(static::TABLE_SHOP); $table->leftJoinSub(Deposit::getBuilder(), static::TABLE_DEPOSIT, function (JoinClause $join) { $join->on( $this->makeColumnName([static::TABLE_SHOP, Shop::COL_NAME_ID]), $this->makeColumnName([static::TABLE_DEPOSIT, Deposit::COL_NAME_SHOP_ID]) ); }); // -----検索条件 // SHOP_ID $this->where($table, $condition, static::CONDITION_SHOP_ID, $this->makeColumnName([static::TABLE_SHOP, Shop::COL_NAME_ID])); // 名前 $name = data_get($condition, static::CONDITION_NAME); if ($name) { $table->where($this->makeColumnName([static::TABLE_SHOP, Shop::COL_NAME_NAME]), 'like', "%{$name}%"); } $table->select($this->columns()); $main = DB::connection("htpms_customer")->table($table, "main"); // ソート $this->sort($main, $condition); $main->orderBy(static::CONDITION_SHOP_ID); // リミット $this->limit($main, $condition); return LoginUserRepositoryData::makeList($main->get()); } private function columns() { $shop = static::TABLE_SHOP; $deposit = static::TABLE_DEPOSIT; $columns = [ $this->makeColumnNameForSelect([$deposit, Deposit::COL_NAME_SHOP_ID]), $this->makeColumnNameForSelect([$deposit, Deposit::COL_NAME_DEPOSIT]), $this->makeColumnNameForSelect([$shop, User::COL_NAME_NAME]), ]; return $columns; } }