Laravel |更新查询返回值[[{“ laboratory”:“ Boulanger”}]]“作为值,而不是” Boulanger“

时间:2018-12-03 13:30:42

标签: laravel-5 pdo

我已经在我的一个控制器中创建了一个钩子函数,用于在提交表单后更新字段。

该钩子应使用实验室名称填充“ orders_detail”数据库的“实验室”字段。

/* POPULATE the laboratory FIELD */
DB::table('orders_detail')->where('id',$id)->first();
/* dd($id); */

/* REQUESTED VALUE IN ARRAY :   "ordersdetail-productname" => array:1 [▼ 0 => "1" ] : */

$productname = $_REQUEST['ordersdetail-productnameID'][0];
/* dd($productnameID); **RETURN VALUE "1"** */

/* QUERY : select laboratories.laboratory FROM products LEFT JOIN laboratories ON products.laboratoryID = laboratories.id WHERE products.id = productnameID : */

$laboratory = DB::table('products')
                ->join('laboratories', 'products.laboratoryID', '=', 'laboratories.id')
                ->selectRaw('laboratories.laboratory')
                ->where('products.id', '=', $productnameID)
                ->get();

/* dd($laboratory); **RETURNED ARRAY 
        Collection {#3536 ▼
          #items: array:1 [▼
            0 => {#3534 ▼
              +"laboratory": "Boulanger"
            }
          ]
        }** */

/* UPDATE THE laboratory FIELD WITH THE RETURNED VALUE */
DB::table('orders_detail')->where('orderID', '=', $id)
->update(['laboratory'=> $laboratory]);

如何摆脱“实验室”:“ Boulanger” ,而保留 Boulanger ,这是我要更新“ laboratory”字段的实验室名称

感谢您的专业知识。

干杯,马克

2 个答案:

答案 0 :(得分:1)

将您的实验室查询更新为

_id

$laboratory = DB::table('products') ->join('laboratories', 'products.laboratoryID', '=', 'laboratories.id') ->selectRaw('laboratories.laboratory') ->where('products.id', '=', $productnameID) ->first(); 将为您提供期望的值。

更新为

$laboratory->laboratory

答案 1 :(得分:0)

尝试

 $laboratory = DB::table('products')
            ->join('laboratories', 'products.laboratoryID', '=', 'laboratories.id')
            ->where('products.id', '=', $productnameID)
            ->pluck('laboratories.laboratory');