質問編集履歴

2

リレーションの命名規則に併せて修正。

2017/10/04 01:21

投稿

masaya_ohashi
masaya_ohashi

スコア9206

test CHANGED
File without changes
test CHANGED
@@ -194,7 +194,7 @@
194
194
 
195
195
  }
196
196
 
197
- public function image() {
197
+ public function images() {
198
198
 
199
199
  return $this->hasMany(Image::class);
200
200
 
@@ -210,9 +210,9 @@
210
210
 
211
211
  ```php
212
212
 
213
- $base_list = Base::with(['ref', 'ref.image'])->all();
213
+ $base_list = Base::with(['ref', 'ref.images'])->all();
214
-
214
+
215
- // HogeにはImageがあるが、FugaにはImageのリレーションがないのでエラー
215
+ // Hogeにはimagesがあるが、Fugaにはimagesのリレーションがないのでエラー
216
216
 
217
217
  ```
218
218
 
@@ -238,22 +238,22 @@
238
238
 
239
239
  }
240
240
 
241
- public function image() {
241
+ public function images() {
242
242
 
243
243
  return $this->hasMany(Image::class);
244
244
 
245
245
  }
246
246
 
247
- protected $appends = ['image'];
247
+ protected $appends = ['images'];
248
-
248
+
249
- public function getImageAttribute($value) {
249
+ public function getImagesAttribute($value) {
250
-
250
+
251
- return $this->image; // なぜかここでimageというattributeは無いとエラーになる。
251
+ return $this->images; // なぜかここでimagesというattributeは無いとエラーになる。
252
-
252
+
253
- // なお外部から$hoge->imageとアクセスした場合はエラーにならない
253
+ // なお外部から$hoge->imagesとアクセスした場合はエラーにならない
254
-
254
+
255
- }
255
+ }
256
-
256
+
257
- }
257
+ }
258
-
258
+
259
- ```
259
+ ```

1

試したことの追記

2017/10/04 01:21

投稿

masaya_ohashi
masaya_ohashi

スコア9206

test CHANGED
File without changes
test CHANGED
@@ -219,3 +219,41 @@
219
219
 
220
220
 
221
221
  当たり前だ、と言われればそれまでなのですが、「あったら取る」「なければnull、またはプロパティ自体が無い」状態のデータが取得したいのです。なんとか方法はないでしょうか。
222
+
223
+
224
+
225
+ ### 試したこと
226
+
227
+ - Hogeモデルのappendsにimageを加え、getImageAttributeを実装する
228
+
229
+ ```php
230
+
231
+ class Hoge extends Model
232
+
233
+ {
234
+
235
+ public function base() {
236
+
237
+ return $this->morphMany(Base::class, 'ref');
238
+
239
+ }
240
+
241
+ public function image() {
242
+
243
+ return $this->hasMany(Image::class);
244
+
245
+ }
246
+
247
+ protected $appends = ['image'];
248
+
249
+ public function getImageAttribute($value) {
250
+
251
+ return $this->image; // なぜかここでimageというattributeは無いとエラーになる。
252
+
253
+ // なお外部から$hoge->imageとアクセスした場合はエラーにならない
254
+
255
+ }
256
+
257
+ }
258
+
259
+ ```