初学者です。
お力添えいただけると幸いです。
やりたいこと
特定のテーブルから2つのカラム情報を配列で取得して、さらに追加でカラム(item)を作成し、文字列(出金)を出力したいです。
設計
DB
1+------------+-----------------+------+-----+---------+----------------+ 2| Field | Type | Null | Key | Default | Extra | 3+------------+-----------------+------+-----+---------+----------------+ 4| id | bigint unsigned | NO | PRI | NULL | auto_increment | 5| user_id | int unsigned | NO | | NULL | | 6| bank_type | int unsigned | NO | | NULL | | 7| bank_id | int unsigned | NO | | NULL | | 8| amount | varchar(100) | NO | | NULL | | 9| verified | date | YES | | NULL | | 10| created_at | timestamp | YES | | NULL | | 11| updated_at | timestamp | YES | | NULL | | 12| deleted_at | timestamp | YES | | NULL | | 13+------------+-----------------+------+-----+---------+----------------+
該当コード
PHP
1$details = DB::table('withdrawals') 2 ->select([ 3 'withdrawals.amount AS amount', 4 'withdrawals.created_at AS created_at', 5 DB::raw("substr('出金') AS item"), 6 ]) 7 ->where('withdrawals.user_id', '=', 1) 8 ->orderBy('created_at', 'desc') 9 ->get(); 10dd($details);
エラーメッセージ
SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ') AS item from `withdrawals` where `withdrawals`.`user_id` = ? order by `created' at line 1 (SQL: select `withdrawals`.`amount` as `amount`, `withdrawals`.`created_at` as `created_at`, substr('出金') AS item from `withdrawals` where `withdrawals`.`user_id` = 1 order by `created_at` desc)
DB::rawをコメントアウトすると、以下のように取得できるので、エラーの原因はDB::rawということがわかっているのですが、原因がわからず、、、
Illuminate\Support\Collection {#1548 ▼ #items: array:1 [▼ 0 => {#1547 ▼ +"amount": "30000" +"created_at": "2021-02-02 19:30:28" } ] }
お力添えいただけると幸いです。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。