0

我正在尝试获取查询字符串参数。我已经尝试了所有我可以在 SO 上找到的东西以及一般的谷歌搜索,如下所示。

URL = http://example.com?companyId=1&subcompany=3;
Then in my controller:
$companyId = $request->query('companyId');
$subcompany = $request->query('subcompany);

因此,如果我访问 mysite.com/api/getcompany?companyId=1&subcompany=3,我会看到我所期望的。我什至得到了我期望得到的结果。问题是,当它传回 Vue 时,它​​根本不是我所期望的。相反,我得到了数据库中所有公司的列表,其中 companyId 为空值,子公司为空值。在查看 Telescope 时,实际处理的查询是

select * from `prods` where
  (
    `companyId` = '..'
    and `subCompany` = ''
  )
  and `products`.`deleted_at` is null

然而,在我的控制器方法中,这就是我传入的内容

    $products = Prod::where([
        ['companyId', '=', $companyId ],
        ['subcompany','=', $brandId]
                               ])
        ->get();

在我的 Vue 组件中,这就是我进行调用的方式,

axios.get("api/getProds").then(res=>{
  console.log(res.data);
});

因此,实际上并没有传递 companyId,因为我在 JS 中没有它。相反,我需要从查询字符串中提取它。我显然错过了一些东西,但我无法弄清楚它是什么。有人可以看到我的代码有什么问题吗?

4

1 回答 1

0

您可以传递如下参数

axios.get("api/getProds",{params:{companyId:this.companyId ,subcompany:this.brandId}}).then(res=>{
  console.log(res.data);
});

注意:this.companyId,this.subcompany 是您在 vue 中创建的道具

publick function getProds(Request $request){
 $products = Prod::where('companyId',$request->companyId)->where('subcompany',$request->brandId)->get();
}
于 2020-03-16T01:31:34.470 回答