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

回答編集履歴

1

2015/02/06 02:57

投稿

gardeningojisan
gardeningojisan

スコア28

answer CHANGED
@@ -1,23 +1,19 @@
1
- LaravelだとfindOrFail()はあるんですが
1
+ LaravelだとfindOrFail()はあるんですが
2
- [http://laravel4.kore1server.com/docs/eloquent#introduction](http://laravel4.kore1server.com/docs/eloquent#introduction)
2
+ http://laravel4.kore1server.com/docs/eloquent#introduction
3
- FindOrCreate()はないですね・・・。
3
+ FindOrCreate()はないですね・・・。
4
- ですので自作する必要があります。
4
+ ですので自作する必要があります。
5
-
5
+
6
- 下記のようなクエリースコープをモデルに追加します。
6
+ 下記のようなクエリースコープをモデルに追加します。
7
-
8
-
9
- ```lang-<ここに言語を入力>
7
+
8
+
10
- public function scopeFindOrCreate($q, $id) {
9
+ public function scopeFindOrCreate($q, $id) {
11
- $obj = $q->find($id);
10
+ $obj = $q->find($id);
12
- return $obj ?: new static;
11
+ return $obj ?: new static;
13
- }
12
+ }
14
- ```
13
+
15
-
16
- 使うときは以下のようにします。
14
+ 使うときは以下のようにします。
17
-
18
- ```lang-<ここに言語を入力>
15
+
19
- $item = Item::findOrCreate($id);
16
+ $item = Item::findOrCreate($id);
20
- $item->id = $id;
17
+ $item->id = $id;
21
- $item->name = 'hoge';
18
+ $item->name = 'hoge';
22
- $item->save();
19
+ $item->save();
23
- ```