gpt4 book ai didi

javascript - 在 JavaScript 代码中访问 Laravel 关系

转载 作者:可可西里 更新时间:2023-11-01 01:51:52 25 4
gpt4 key购买 nike

Product 与表 productbrand 具有一对多关系“productbrand”,而 productbrand 与表 brand 具有一对一关系“brand”。表品牌有一个列,“品牌”。而且我能够访问产品的品牌。所有其他类别、用户名等都可以正常访问。

public function show(Request $request)
{
if($request->ajax())
{
$id = $request->id;
if($id)
{
$show = Product::where(['product_id'=>$id])->first();
$category = $show->category->category;
$username = $show->user->username;
$getbrands = $show->productbrand;
foreach($getbrands as $getbrand)
{
$brand=$getbrand->brand->brand;
}
if($show)
{
echo json_encode(array('status' => TRUE, 'show' => $show, 'username' => $username, 'category' => $category, 'brand' => $brand)); die;
}
}
}
echo json_encode(FALSE);die;
}

Ajax 和 jQuery:

$.ajax({
type: "POST",
url: "{{url('/product/show')}}",
data: {id:id},
success: function (data) {
var res = $.parseJSON(data);
if(res.status == true)
{
var result = 'Category: ' + res.category + '<br>' +
'Product by: ' + res.username + '<br>' +
'Brands: ' + res.brand + '<br>' +
'Price: ' + res.show.price + '<br>' +
'Price type: ' + res.show.price_type + '<br>' +
'Product Views: ' + res.show.views + '<br>';
$('#result').html(result);
}
}
});

这样我只能得到一个品牌。我也试过下面的方法,但是失败了。

在 Controller 中:

 $getbrands = $show->productbrand;
echo json_encode(array('status' => TRUE, 'show' => $show, 'username' => $username, 'category' => $category, 'getbrands' => $getbrands));

在 Ajax 中:

for(var i=0; i<res.getbrands.length; i++)
{
var brands=res.getbrands[i].brand.brand; //First 'brand' is relation and second is the brand I am trying to access
}

最佳答案

为什么要声明所有这些变量:

$category = $show->category->category;
$username = $show->user->username;
$getbrands = $show->productbrand;

如果category, user, productbrand 然后brands 是与product 的模型关系,从category 中获取category,从user 中获取username 等。

而是维护与'with'的关系;

public function show(Request $request)
{
if($request->ajax())
{
$id = $request->id;
if($id)
{
$show = Product::where(['product_id'=>$id])->with('category')
->with('user')
->with('productbrand.brand') // product has onetomany relation 'productbrand' with table productbrand and productbrand has onetoone relation 'brand' with table brand
->first();
if($show)
{
echo json_encode(array('status' => TRUE, 'show'=>$show)); die;
}
}
}
echo json_encode(FALSE);die;

在 JavaScript 中:

        if(res.status == true)
{
var result = 'Category: ' + res.show.category.category + '<br>' +
'Product by: ' + res.show.user.username + '<br>' +
'Price: ' + res.show.price + '<br>' +
'Price type: ' + res.show.price_type + '<br>' +
'Product Views: ' + res.show.views + '<br>';
$('#result').html(result);
}
}
});

product 与 table productbrand 具有一对多关系“productbrand”,而 productbrand 与 table brand 具有一对一关系“brand”。表品牌有一列“品牌”。我并不是无法访问产品的品牌。 这样访问品牌。

var result = 'Brands: ';
for(var i=0; i<res.show.productbrand.length; i++)
{
result += res.show.productbrand[i].brand.brand;
}

关于javascript - 在 JavaScript 代码中访问 Laravel 关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38916788/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com