提问者:小点点

Laravel-在ajax响应数据中访问来自product(bongsto)的子类别。


一个产品有一个子类。在我的products表中,我有subcategory_id字段。我还在产品和子类模型之间建立了归属关系。因此,我有一个方法,它返回具有特定标记ID的所有产品。下面是我的代码:

public function getProductsByTag($tag_id)
{
    $tag = Tag::find($tag_id);
    $products = $tag->products; //belongsTo relationship

    return json_encode(['products' => $products]);
}

然后,在我的ajax请求成功后,我需要访问产品的子类别,就像我访问标签$tag->products的products一样。所以在拉拉维尔会是:

$subcategory=$product->子类别;

我以为product.subcategory会起到这个作用,但我没有得到定义。下面是我的ajax成功函数:

success: function (data) {
    $.each(data.products, function (i, product) {
    console.log(product.subcategory);  
   });
},

我在控制台中没有定义。如何访问ajax响应数据中的关系?


共2个答案

匿名用户

正如我在评论中所说的,laravel不会自动加载所有的关系,所以您必须这样做。

如果您希望每次将子类别加载到产品中,那么您必须更新模型并添加with属性,如下所示:

//Product model
protected $with = ['subcategory'];

或者你只想这样做一次,所以你必须做一些事情,比如:

$products = $tag->products()->with('subcategory')->get();

匿名用户

我通过提供一个变量来保持我需要的模型内部的关系,找到了一个解决方案。我在我的产品模型中为子类别添加了一个变量,在我的子类别模型中为类别添加了一个变量。下面是它的样子:在我的产品模型中:

protected $with = array('subcategory');

在我的子类别模型中:

受保护的$WITH=数组(“category”);

现在我可以从我的ajax成功响应数据轻松地访问它们。