سلام خسته نباشید.
ارور:
SQLSTATE[42S22]: Column not found: 1054 Unknown column 'category_category_id' in 'field list' (SQL: select `category_category_id` from `categorizables` where `categorizable_id` = 25 and `categorizable_type` = App\Package)
مدل پکیج:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Category extends Model
{
protected $table = 'categories';
protected $primaryKey = 'category_id';
public $timestamps = false;
protected $fillable = ['category_name'];
public function Package()
{
return $this->morphedByMany(Package::class, 'categorizable');
}
}
مدل دسته بندی:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Package extends Model
{
protected $table = 'packages';
protected $primaryKey = 'package_id';
protected $guarded = 'package_id';
protected $fillable = ['package_title', 'package_price'];
public function File()
{
return $this->belongsToMany(File::class, 'file_package', 'package_id', 'file_id');
}
public function Package()
{
return $this->belongsToMany(User::class, 'user_packages', 'package_id', 'user_id')->withPivot(['amount', 'created_at']);
}
public function Categories()
{
return $this->morphToMany(Category::class, 'categorizable');
}
}
کنترولر پکیج:
public function store(Request $request)
{
$this->validate($request, [
'package_title' => 'required',
'package_price' => 'required'
]);
$NewPackage = Package::create([
'package_title' => $request->input('package_title'),
'package_price' => $request->input('package_price')
]);
if ($request->has('categories')) {
$NewPackage->Categories()->sync($request->input('categories'));
}
if ($NewPackage) {
return redirect()->route('admin.package.list')->with('success', 'با موفقیت اضافه شد');
}
}
دیتابیس:
categories { category_id,category_name}
categorizables {category_id,categorizable_id,categorizable_type}
@hesammousavi
خوب درسته بهش گفتم کدوم به کدومه بازم هیچ فرقی نکرد
@hesammousavi
میشه نمونه نشونم بدید؟!
شاید پاسخ شما همینجا باشد
@mrkiani.dev
بله تغییری که نمایش دادید رو بفرستید
ارورتون رو هم ببینید نشون دهنده این هست که مشکلتون مربوط به پیاده سازی روابط هست
البته من پیشنهاد میکنم در جدول categories بجای قرار دادن category_id و category_name
فقط قرار بدیم id و name
چه کاریه واقعا
من فیلد های جدول categories رو به id و name تغیر دادم
Category Model
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Category extends Model
{
protected $table = 'categories';
protected $primaryKey = 'id';
public $timestamps = false;
protected $fillable = ['name'];
public function Package()
{
return $this->morphedByMany(Package::class, 'categorizable_type', 'categorizables' , 'categorizable_id' , 'category_id');
}
}
Package Model
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Package extends Model
{
protected $table = 'packages';
protected $primaryKey = 'package_id';
protected $guarded = 'package_id';
protected $fillable = ['package_title', 'package_price'];
public function File()
{
return $this->belongsToMany(File::class, 'file_package', 'package_id', 'file_id');
}
public function Package()
{
return $this->belongsToMany(User::class, 'user_packages', 'package_id', 'user_id')->withPivot(['amount', 'created_at']);
}
public function Categories()
{
return $this->morphToMany(Category::class, 'category_id' , 'categorizables' , 'category_id' , 'categorizable_id');
}
}
من درست این Polymorphic relationships درک نکردم بخاطر همینه که اشتباه می کنم
@hesammousavi
فرستادم
Category Model
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Category extends Model
{
protected $table = 'categories';
protected $primaryKey = 'id';
public $timestamps = false;
protected $fillable = ['name'];
public function Package()
{
return $this->morphedByMany(Package::class, 'categorizable', 'categorizables' , 'categorizable_id' , 'category_id');
}
}
Package Model
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Package extends Model
{
protected $table = 'packages';
protected $primaryKey = 'package_id';
protected $guarded = 'package_id';
protected $fillable = ['package_title', 'package_price'];
public function File()
{
return $this->belongsToMany(File::class, 'file_package', 'package_id', 'file_id');
}
public function Package()
{
return $this->belongsToMany(User::class, 'user_packages', 'package_id', 'user_id')->withPivot(['amount', 'created_at']);
}
public function Categories()
{
return $this->morphToMany(Category::class, 'categorizable' , 'categorizables' , 'category_id' , 'categorizable_id');
}
}
اینا گذاشتم که بدونند مشکل از کجا بوده ، ممنون بابت راهنمایی تون
@hesammousavi
تجربه شما از تجربه من خیلی بیشتره و حتما از نکات شما استفاده میکنم :) ممنون
سلام .
من یه خطا توی بخش پلی مورفیک ریلیشن شیپ دارم
Route::get('user/photo',function(){
$user = \\App\\User::find(1);
foreach ($user->photos as $photo){
echo $photo->path;
echo "</br>";
}
});
Invalid argument supplied for foreach()
دستور فور ایچ کار نمیکنه
همه جارم بررسی کردم. مشکل از Foreach هستش