Как я могу получить параметры URL-адресов из моего контроллера Laravel с помощью Vue

Я пытаюсь получить параметры строки запроса. Я пробовал все, что мог найти на SO, а также общие поиски в Google, такие как следующие.

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. Вместо этого мне нужно извлечь его из строки запроса. Я явно что-то упускаю, но не могу понять, что именно. Может ли кто-нибудь увидеть, что не так с моим кодом?


person Premisoft    schedule 08.02.2020    source источник
comment
Вы имеете в виду получение параметра URL-адреса из URL-адреса браузера в ваш компонент vue?   -  person codervine    schedule 08.02.2020
comment
@codervine, да, это то, что я пытался сделать, но решил это по-другому. Вместо этого я передал companyId и subcompany компоненту Vue из моего блейд-файла при создании экземпляра компонента.   -  person Premisoft    schedule 10.02.2020


Ответы (1)


вы можете передать параметр, как показано ниже

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();
}
person OmarSafi    schedule 16.03.2020