我使用Laravel 5.3。
我有2个表格和2个模型(广告和类别):
Model ad :
----------------
class Ad extends Model
{
protected $table = 'ads';
protected $primaryKey = 'ad_id';
public function category()
{
return $this->belongsTo(Category::class, 'cat_id', 'cat_id');
}
}
和
Model category :
-----------------
class Category extends Model
{
protected $table = 'categories';
protected $primaryKey = 'cat_id';
public function ads()
{
return $this->hasMany(Ad::class);
}
}
我的数据库结构是:
ads:
ad_id -
ad_name
ad_status
cat_id
categoriess:
cat_id -
cat_name
我真的不知道为什么,但我无法获得使用它(在我的存储库中)之间的关系:
return $this->model
->select('ad_id', 'ad_name')
->where('ad_status', '=', 1)
->with('category');
查询没问题,我收到了ad
个信息,但关系是空的。我查了一下,两个表中都存在cat_id
。
我错过了什么吗?
答案 0 :(得分:1)
您需要将cat_id
密钥添加到select()
才能使其正常运行:
return $this->model
->select('ad_id', 'ad_name', 'cat_id')
->where('ad_status', 1)
->with('category')
->get();
如果您不添加此密钥,则关系将始终为null
。另外,使用get()
获取数据。