質問するログイン新規登録

質問編集履歴

1

クエリスコープについての質問

2017/02/23 04:50

投稿

potemaru
potemaru

スコア13

title CHANGED
@@ -1,1 +1,1 @@
1
- Laravel5- Modelfunction結果をcontrollerで取得する方法
1
+ Laravel5- 動的スコープ呼び出しについて
body CHANGED
@@ -1,11 +1,11 @@
1
1
  お世話になります。
2
2
  今回、Eloquentを利用して、データベースからselectしてきた値をviewに表示させるプログラムを書きたいと思っています。
3
3
 
4
- まず、Eloquentのクエリ文実行結果をControllerで取得する方法がよくわかりません。
5
- そもそも、こ方法で合っていかも分からないのですが...
4
+ 入力されたデータをスコープ定義にあはめたいのですが
5
+ スコープパラメータの部分でエラーが起きてしまいます。
6
- viewで表示させたいのは、modelでgetされた$resultと$notinputの値なのですが、どう処理したら良いのか
6
+ エラー内容:Type error: Too few arguments to function
7
- どなたかご教授いただけないでしょうか。
8
7
 
8
+ こういった場合、パラメータはどういった記載にすれば良いのでしょうか。
9
9
 
10
10
  こちらがコントローラーです
11
11
  ```PHP
@@ -20,59 +20,40 @@
20
20
  {
21
21
 
22
22
  //検索
23
- public function delete_search()
23
+ public function delete_search(Request $request)
24
- {
24
+ {
25
-
25
+ $this->validate($request,[
26
- return view('sqlconnect/delete_check', compact('result', 'notinput'));
26
+ 'number' => 'required' ,
27
+ 'address' => 'required',
27
- }
28
+ ]);
29
+ $data = $request->all();
28
30
 
29
- //削除実行
30
- public function delete_action()
31
- {
32
- $radio = Request::get('radio');
31
+ $result = DBconnect::Search()->get();
33
- if (!empty($radio))
32
+
34
- {
35
- DBconnect::where('number', '=', $radio)->delete();
36
- $complete = "データが削除されました。";
37
- }
38
- else
39
- {
40
- $errmsg = "削除するデータを選択してください。";
41
- }
42
- return view('sqlconnect/delete_action', compact('complete', 'errmsg'));
33
+ return view('sqlconnect/delete_check', compact('result'));
43
34
  }
35
+
44
36
  ```
45
37
  こちらがmodel
46
38
  ```php
47
39
  namespace App;
48
40
 
41
+ use Illuminate\Database\Eloquent\Scope;
49
42
  use Illuminate\Database\Eloquent\Model;
50
43
  use App\DBconnect;
51
44
  use App\User;
52
- use Illuminate\Support\Facades\Request;
53
45
 
54
46
  class DBconnect extends Model
55
47
  {
56
48
  protected $table = 'addresses';
57
49
  public $timestamps = false;
58
50
 
59
- //削除実行
60
- public function DBsearch()
51
+ public function scopeSearch($query, $data)
61
- {
52
+ {
53
+ return $query->select('number', 'address')
54
+ ->where('number','like',$data['number'].'%')
55
+ ->where('address', 'like','%'.$data['address'].'%');
56
+ }
57
+ }
62
58
 
63
- $number = Request::get('number');
64
- $address = Request::get('address');
65
-
66
- if(empty($number) && empty($address))
67
- {
68
- $notinput = "データを入力してください。";
69
- }
70
- else
71
- {
72
- $result = DBconnect::select('number', 'address')
73
- ->where('number','like',$number.'%')
74
- ->where('address', 'like','%'.$address.'%')
75
- ->get();
76
- }
77
- }
78
59
  ```