質問編集履歴
2
リレーションの命名規則に併せて修正。
title
CHANGED
File without changes
|
body
CHANGED
@@ -96,7 +96,7 @@
|
|
96
96
|
public function base() {
|
97
97
|
return $this->morphMany(Base::class, 'ref');
|
98
98
|
}
|
99
|
-
public function
|
99
|
+
public function images() {
|
100
100
|
return $this->hasMany(Image::class);
|
101
101
|
}
|
102
102
|
}
|
@@ -104,8 +104,8 @@
|
|
104
104
|
|
105
105
|
このあと、HogeのImageも欲しいので以下のようにwithを書き直すとエラーになります。
|
106
106
|
```php
|
107
|
-
$base_list = Base::with(['ref', 'ref.
|
107
|
+
$base_list = Base::with(['ref', 'ref.images'])->all();
|
108
|
-
// Hogeには
|
108
|
+
// Hogeにはimagesがあるが、Fugaにはimagesのリレーションがないのでエラー
|
109
109
|
```
|
110
110
|
|
111
111
|
当たり前だ、と言われればそれまでなのですが、「あったら取る」「なければnull、またはプロパティ自体が無い」状態のデータが取得したいのです。なんとか方法はないでしょうか。
|
@@ -118,13 +118,13 @@
|
|
118
118
|
public function base() {
|
119
119
|
return $this->morphMany(Base::class, 'ref');
|
120
120
|
}
|
121
|
-
public function
|
121
|
+
public function images() {
|
122
122
|
return $this->hasMany(Image::class);
|
123
123
|
}
|
124
|
-
protected $appends = ['
|
124
|
+
protected $appends = ['images'];
|
125
|
-
public function
|
125
|
+
public function getImagesAttribute($value) {
|
126
|
-
return $this->
|
126
|
+
return $this->images; // なぜかここでimagesというattributeは無いとエラーになる。
|
127
|
-
// なお外部から$hoge->
|
127
|
+
// なお外部から$hoge->imagesとアクセスした場合はエラーにならない
|
128
128
|
}
|
129
129
|
}
|
130
130
|
```
|
1
試したことの追記
title
CHANGED
File without changes
|
body
CHANGED
@@ -108,4 +108,23 @@
|
|
108
108
|
// HogeにはImageがあるが、FugaにはImageのリレーションがないのでエラー
|
109
109
|
```
|
110
110
|
|
111
|
-
当たり前だ、と言われればそれまでなのですが、「あったら取る」「なければnull、またはプロパティ自体が無い」状態のデータが取得したいのです。なんとか方法はないでしょうか。
|
111
|
+
当たり前だ、と言われればそれまでなのですが、「あったら取る」「なければnull、またはプロパティ自体が無い」状態のデータが取得したいのです。なんとか方法はないでしょうか。
|
112
|
+
|
113
|
+
### 試したこと
|
114
|
+
- Hogeモデルのappendsにimageを加え、getImageAttributeを実装する
|
115
|
+
```php
|
116
|
+
class Hoge extends Model
|
117
|
+
{
|
118
|
+
public function base() {
|
119
|
+
return $this->morphMany(Base::class, 'ref');
|
120
|
+
}
|
121
|
+
public function image() {
|
122
|
+
return $this->hasMany(Image::class);
|
123
|
+
}
|
124
|
+
protected $appends = ['image'];
|
125
|
+
public function getImageAttribute($value) {
|
126
|
+
return $this->image; // なぜかここでimageというattributeは無いとエラーになる。
|
127
|
+
// なお外部から$hoge->imageとアクセスした場合はエラーにならない
|
128
|
+
}
|
129
|
+
}
|
130
|
+
```
|