Have you tried doing dd at various points to verify you're getting what you expect. Also make use of the network tab.
Sep 20, 2020
27
Level 3
DB::Insert - SQL Syntax Error
Hi everyone
I am reading products in from a woocommerce API and saving them to my database. I want to creat a check that says if the product exists then update the price & stock information - If it doesnt exist then create a new product.
Following guidance yesterday the Insert is working nicely but I now can't get the Update SQL syntax correct...
Can anybody help? here's the code:
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
$woocommerce = new Client(
$this->storeUrl,
$this->consumerKey,
$this->consumerSecret,
);
for ($page = 1; $page<2; $page++) {
$products = $woocommerce->get('products',
[
'page' => $page,
'per_page' =>100
]);
foreach($products as $product) {
$stockItem[] = [
'product_code' => $product->sku,
'name' => $product->name,
'description' => $product->description,
'cost_price'=> $product->price,
'list_price' => $product->regular_price,
'stock_quantity' => $product->stock_quantity
];
}
/// ddd($stockItem); // works ok
$item = DB::select('select * from isl_products where product_code = product_code',$stockItem[1]);
//dd($item); // Works Well -> Selects 100 Items From Database that already exist
if(isset($item)) {
$updateItem[] = [
'product_code'=> $product->sku,
'cost_price'=> $product->price,
'list_price' => $product->regular_price,
'stock_quantity' => $product->stock_quantity
];
// dd($updateItem); // working well - > returns array of 1 Item that needs updating
// DB::table('isl_products')->set($updateItem); // This Did not work
DB::update('update isl_products set $updateItem'); // This does not Work
} else {
DB::table('isl_products')->insert($stockItem);
}
}
return view('products.store')->with(['products'=>$products]);
}
Any Help would be very much appreciated
Matt
Level 27
this should fix it
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
$woocommerce = new Client(
$this->storeUrl,
$this->consumerKey,
$this->consumerSecret,
);
for ($page = 1; $page<2; $page++) {
$woo_products = $woocommerce->get('products',
[
'page' => $page,
'per_page' =>100
]);
foreach ($woo_products as $woo_product) {
$woo_item = [
// 'id' => $woo_product->id,
'product_code' => $woo_product->sku,
'name' => $woo_product->name,
'description' => $woo_product->description,
'cost_price'=> $woo_product->price,
'list_price' => $woo_product->regular_price,
'stock_quantity' => $woo_product->stock_quantity
];
// dd($woo_item);
$db_item = DB::select("select * from isl_products where product_code = '{$woo_item["product_code"]}' limit 1");
if (count($db_item) > 0) {
$affected = DB::table('isl_products')
->where('id', $db_item[0]->id)
->update($woo_item);
} else {
DB::table('isl_products')->insert($woo_item);
}
}
}
return view('products.store')->with(['products'=>$woo_products]);
}
1 like
Please or to participate in this conversation.