#laravel #laravel-8
Вопрос:
Это моя модель элемента. Я создал функцию arrayPackageItemSelect, которая получает идентификатор и эквивалентна его имени элемента.
class Item extends Model
{
use HasFactory;
protected $fillable = [
'user_id',
'name',
'price',
'itemdescription',
'activeInactive'
];
public function packageitems()
{
return $this->hasMany(PackageItem::class);
}
public static function arrayPackageItemSelect()
{
$arr = [];
$items = Item::all();
foreach($items as $item){
$arr[$item->id] = $item->name;
}
return $arr;
}
}
моя модель PackageItem
class PackageItem extends Model
{
protected $fillable = [
'user_id',
'item_id',
'price'
];
protected $table='packageitems';
public static function itemModel()
{
return $this->belongsTo(Item::class);
}
}
мой контроллер PackageItem (СОЗДАТЬ) и получение идентификатора элемента из другой таблицы (внешний ключ), чтобы я мог указать для него категорию.
public function addPackageItem(Request $request)
{
$user = Auth::user();
$item = Item::arrayPackageItemSelect();
echo $item; // when I echo this I get Array to Conversion String in POSTMAN
$fields = $request->validate([
'user_id' => 'required',
'item_id' => 'required',
'price' => 'required|numeric'
]);
// // echo $items;
$package = PackageItem::create([
'user_id' => $user->id,
'item_id' => $item,
'price'=> $fields['price']
]);
return response($package, 201);
}
Что я получаю, когда повторяю элементы
Результаты, которые я получаю от POSTMAN
Моя схема
Вот где моя ссылка https://www.artofcse.com/learning/product-view-insert-update-delete
Кто-нибудь может мне помочь, что не так?
Ответ №1:
В вашем контроллере (метод addPackageItem):
$package = PackageItem::create([
'user_id' => $user->id,
'item_id' => $fields['item_id'],
'price'=> $fields['price']
]);
Кроме того, я думаю, что в вашей модели PackageItem есть ошибка. belongsTo не должен вызываться в статическом методе :
public function itemModel()
{
return $this->belongsTo(Item::class);
}