前提・実現したいこと
Laravelを使って、DBから情報を取得したいと考えています。
元のテーブルでは主キー(下の例ではid)はstring型になっていて、
first()したところまではstring型のままなのですが、
toArray()をしたところint型になってしまいました。
どうすればstring型のまま配列に変換できるでしょうか。
該当のソースコード
listController.php
php
1<?php 2 3namespace App\Http\Controllers; 4use Illuminate\Http\Request; 5use App\Models\search; 6use Illuminate\Support\Facades\DB; 7 8class listController extends Controller 9{ 10 public function store(Request $request) 11 { 12 //リクエスト内容 13 $conditions = $request; 14 15 $md = new search(); 16 17 //全画面で入力された内容(例:111-1111) 18 var_dump($request->input); 19 20 switch($request->search_type){ 21 //完全一致検索 22 case 'perfect': 23 $items_arr = $md->Perfect($request->input) 24 //一件のみ取得 25 ->first(); 26 break; 27 //前方一致検索 28 case 'fuzzy': 29 $items_arr = $md->fuzzy($request->input) 30 //全件取得 31 ->get(); 32 break; 33 default: 34 $items_arr = $md; 35 break; 36 } 37 38 //この時点ではstring(例:111-1111) 39 var_dump($items_arr); 40 41 //追記)考え方が根本的に間違っていることに気づいたためコメントアウト。本題には影響ないと考えます。 42 //if ($items_arr !== null) { 43 // $items_arr->Fromconditions($request); 44 //} 45 46 //この時点ではstring(例:111-1111) 47 var_dump($items_arr); 48 49 if ($items_arr !== null) { 50 $items_arr = $items_arr->toArray(); 51 } 52 53 //この時点でintに変わっている(例:111) 54 var_dump($items_arr); 55 56 return view('list/list', 57 compact( 'items_arr' ) 58 ); 59 } 60}
search.php
php
1<?php 2 3namespace App\Models; 4 5use Illuminate\Database\Eloquent\Model; 6 7class search extends Model 8{ 9 protected $table = 'item'; 10 protected $primaryKey = 'id'; 11 12 //完全一致検索 13 public function scopePerfect($query, $input) 14 { 15 return $query->where('id', $input); 16 } 17 18 //前方一致検索 19 public function scopeFuzzy($query, $input) 20 { 21 return $query->where('id', 'like', "$input%"); 22 } 23 24 //追記)完全にミス。絶対動かない 25 //$conditionsの中に$columnsと一致するものがあればSQL文を発行する 26 public function scopeFromconditions($query, $conditions) 27 { 28 //検索対象となるカラム 29 $columns = [ 30 'kind', 'salesStartYear', 'discontinuedYear' 31 ]; 32 33 foreach ($columns as $column) { 34 if (isset($conditions->$column)) { 35 $query->where($column, $conditions->$column); 36 } 37 } 38 return $query; 39 } 40}
補足情報(FW/ツールのバージョンなど)
Laravel 5.6.3
PHP 7.1.8
なお、scopeFromconditionsが正常に動くかどうかはテストできていません。
回答1件
あなたの回答
tips
プレビュー