>我在产品和照片模型之间有关系。
产品型号 :
use IlluminateDatabaseEloquentModel;
use AppProduct;
use AppPhoto;
class Product extends Model
{
public function photos() {
return $this->hasMany(Photo::class, 'product_id');
}
}
照片模特 :
use IlluminateDatabaseEloquentModel;
use AppPhoto;
use AppProduct;
class Photo extends Model
{
public function product() {
return $this->belongsTo(Product::class);
}
}
当我得到这样的产品时:
$product = Product::find($id)->with('photos')->first();
dd($product);
输出:
{
"id":1,
"title":"some product",
"photos":[
{
"id":1,
"path":"a photo 1 path"
},
{
"id":2,
"path":"a photo 2 path"
},
{
"id":3,
"path":"a photo 3 path"
}
]
}
当我尝试访问时的问题$product->photos
我什么也得不到。 就像一个空键。
如果我尝试dd($product->photos)
,我会得到null
数组键存在并包含数据,为什么在访问它时,它什么都不返回?
我想出了问题所在。 这是一个冲突
我在products table
有一个名为照片的列,它与关系名称相同:
public function photos() { // this photos name
return $this->hasMany(Photo::class, 'product_id');
}
因此,当我尝试访问照片时,它调用了">照片"列而不是">关系"名称,并且该列是空的,这就是它总是不返回任何内容的原因。
谢谢。