как добавить новое поле и значение из выбранной объединенной таблицы - PullRequest
0 голосов
/ 10 июля 2020

у меня есть такая объединенная таблица

введите описание изображения здесь

Я хочу создать новое поле с именем qty_exceed, а значение основано на

(qty_stock - qty_taken)

мне нужно сделать это в запросе или сделать отдельную операцию и сохранить ее в переменной?

мой код

$getmaterial = ContractProduct::select(
        'product_item.ref_rof_id',
        'product_item.code',
        'product_item.qty_stock',
        'contract_product.qty_taken'
    )
    ->where('ref_rof_id', $getrof->ref_rof_id)
    ->join('product_item', 'contract_product.ref_product_id', '=', 'product_item.code')
    ->get();

    $data['getquoid'] = $getquoid;
    $data['getmaterial'] = $getmaterial;
    $view = $this->module_path . '.next-create';
    
    return response()->view($view, $data);

1 Ответ

1 голос
/ 10 июля 2020

Вам необходимо использовать DB :: raw

Но помните, что необработанные операторы будут вставлены в запрос в виде строк, поэтому вы должны быть предельно осторожны, чтобы не создавать SQL инъекций. уязвимости.

С DB::raw ваш код будет выглядеть так:

$getmaterial = ContractProduct::select(
        'product_item.ref_rof_id',
        'product_item.code',
        'product_item.qty_stock',
        'contract_product.qty_taken',
         ContractProduct::raw('product_item.qty_stock - contract_product.qty_taken as qty_exceed') 
    )
    ->where('ref_rof_id', $getrof->ref_rof_id)
    ->join('product_item', 'contract_product.ref_product_id', '=', 'product_item.code')
    ->get();

    $data['getquoid'] = $getquoid;
    $data['getmaterial'] = $getmaterial;
    $view = $this->module_path . '.next-create';
    
    return response()->view($view, $data);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...