Laravel-此集合实例上不存在属性[所有者]



我正在尝试通过他们的 id 从同一调用中的多行获取数据,但每次提交表单时都收到此错误。 "此集合实例上不存在属性 [所有者]。 你能告诉我我做错了什么吗?

我的控制器

public function delivery(Request $request) {
$iid = $request->inv_id;

$item = DB::table('inventory')
->join('products', 'products.id', '=', 'inventory.product_id')
->whereIn('inventory.id', $iid)
->select('products.*' , 'inventory.id as id1')
->get();

//Check if user owns the items
if ($item->owner != Auth::user()->id)
return back()->with('error', 'Nu detii acest obiect.');
//Check if item is not sold
if ($item->sold == 1)
return back()->with('error', 'Din pacate acest obiect este vandut.');
//Check if the item is not put in the marketplace
if ($item->on_market == 1)
return back()->with('error', 'Acest obiect este plasat la vanzare pe market.');
// Set Inventory Item redemeed to 1
Inventory::whereIn('id', $iid)
->update(['redeemed' => 1]);

return redirect('/inventory')->with('success', 'Success');
}

我的刀片:

<input type="hidden" name="inv_id[]" value="{{$product->id1}}">

日($item( 输出

Collection {#679 ▼
#items: array:3 [▼
0 => {#677 ▼
+"id": 339
+"product_id": 13
+"game_key": null
+"owner": "6"
+"redeemed": 0
+"visible": 1
+"delivered": 0
+"sold": 0
+"on_market": 0
+"item_nr": "8062731872"
+"created_at": "2020-02-07 17:13:52"
+"updated_at": "2020-02-07 17:13:52"
+"id1": 339
}
1 => {#674 ▶}
2 => {#664 ▶}
]
}

基本上你的$item变量是一个集合[],这意味着你需要遍历它。但是,如果您期望获得一行结果,则必须使用first()而不是get()

编辑(假设您正在获取项目列表(

public function delivery(Request $request) {
$iid = $request->inv_id;
$items = DB::table('inventory')
->join('products', 'products.id', '=', 'inventory.product_id')
->whereIn('inventory.id', $iid)
->select('products.*' , 'inventory.id as id1')
->get();
$errors = [];
foreach($items as $item) {
if ($item->owner != Auth::user()->id) {
$errors[] = 'Nu detii acest obiect.';
}
if ($item->sold == 1) {
$errors[] = 'Din pacate acest obiect este vandut.';
}
if ($item->on_market == 1) {
$errors[] = 'Acest obiect este plasat la vanzare pe market.';
}
}

if(!empty($errors)) {
$back = back();
foreach($errors as $error) {
$back = $back->with('error', $error); 
}
return $back;
}
Inventory::whereIn('id', $iid)
->update(['redeemed' => 1]);

return redirect('/inventory')->with('success', 'Success');
}

相关内容