Laravel属于甚至没有使用特定的FK

时间:2016-11-19 12:25:06

标签: php laravel

我使用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

我错过了什么吗?

1 个答案:

答案 0 :(得分:1)

您需要将cat_id密钥添加到select()才能使其正常运行:

return $this->model
    ->select('ad_id', 'ad_name', 'cat_id')
    ->where('ad_status', 1)
    ->with('category')
    ->get();

如果您不添加此密钥,则关系将始终为null。另外,使用get()获取数据。