J'ai une table jointe, puis je l'ai fait en matrice comme ceci
Donc, sur le tableau 1 et 2, il n'y a pas d'élément dans la base de données C'est pourquoi le est un moyen d'activer le null sur Voici mon code P> qty_stock code> renvoyé null p> qty_stock code> dans un numéro 0 code>? $getmaterial = ContractProduct::select(
'contract_product.ref_contract_id',
'contract_product.ref_product_id',
'product_item.name as product_name',
'contract_product.qty as qty_taken',
'stock.qty_stock',
'contract_product.unit_price as price',
'contract_product.sub_total_price as budget',
\DB::raw('ABS(stock.qty_stock - contract_product.qty) as qty')
)
->leftjoin('contract_document', 'contract_product.ref_contract_id', '=', 'contract_document.contract_id')
->leftjoin('product_item', 'contract_product.ref_product_id', '=', 'product_item.code')
->leftjoin('stock', 'contract_product.ref_product_id', '=', 'stock.ref_product_id')
->where('contract_document.ref_project_id', $getquoid->project_id)
->get();
4 Réponses :
Utiliser coalesce () code>: coalesce () code> est la fonction SQL standard pour remplacer null code > valeurs. Il renvoie la première valeur qui n'est pas null code> ses arguments - il peut y avoir n'importe quel nombre d'arguments. P> p>
Si vous souhaitez remplacer null code> avec 0, vous pouvez utiliser coalesce code> ou ou CASE WHEN stock.qty_stock is not null then stock.qty_stock else 0 end
Je recommande de faire cela sur la variable Où que vous utilisiez $ getmaaterial code> au lieu de le faire avec le constructeur de requêtes (c'est-à-dire à l'aide de coalesce code>): QTy_stock Code>, vous pouvez simplement dire: P> for ($i = 0; $i < $getmaterial->count(); $i++) {
$getmaterial[i].qty_stock = $getmaterial[i].qty_stock | 0;
}
// or:
for ($i = 0; $i < $getmaterial->count(); $i++) {
if ($getmaterial[i].qty_stock == null) {
$getmaterial[i].qty_stock = 0;
}
}
Vous pouvez utiliser ifnull () code> ou coalesce () code> pour ce dernier fonctionne la même manière. ISNULL(stock.qty_stock) as qty_stock