رفتن به مطلب
انجمن پشتیبانی لاراول ایران

هاست لاراول با پشتیبانی 24 ساعته و امکانات کامل از مدیرهاست

scream3196

کاربر
  • تعداد ارسال ها

    3
  • تاریخ عضویت

  • آخرین بازدید

پست ارسال شده توسط scream3196


  1. یه محصول یه کتگوری و یه ساب دارم.هر سه در سه تیبل جداگانه.
    برای هر کدوم هم یه pivot تیبل هم زدم.
    category_products
    category_subcategory

    از این کد برای ذخیره آی دی های محصول و دسته استفاده میکنم

    $data->cats()->sync($request->category_id,false);
    

    و از این کد هم برای ذخیره آی دی دسته و سابش :

    $data1->subcat()->sync($request->subcat,false);
    

    محصول و دسته اوکیه ولی دسته و سابش فقط دسته بدرستی ذخیره میشه و ساب یه ای دی کمتر ذخیره میکنه
    مثلا : دسته شماره سه و ساب شماره ۳ ولی موقع ذخیره ۳ و ۲ ذخیره میشن.

    این کد هم توی مدل محصول :

    
     
     
    public function CATS(){
     
    return $this->belongsToMany(Category::class, 'category_products',
     
    'product_id', 'category_id');
     
    }

    این کد هم برای مدل دسته :

    
     
     
    public function subcat()
     
    {
     
    return $this->belongsToMany(SubCategory::class, 'category_subcategory',
     
    'category_id', 'subcategory_id');
     
    }
    
     
     
    این کد هم برای مدل ساب :
     
     
     
    public function category(){
     
    return $this->hasMany(Category::class);
     
    }
     
    public function products()
     
    {
     
    return $this->hasMany(Products::class);
     
    }

    امیدوارم درست تونسته باشم توضیح بدم


  2. سلام به بزرگواران

     

    من سه  تیبل products categories subcategories دارم

    وقتی پروداکت و کتگوری رو سینک میکنم ذخیره میشه در تیبل category_products

    وقتی میخوام ساب کتگوری هم در ستون کناریش ذخیره بشه این پیغام میاد :

     

    SQLSTATE[HY000]: General error: 1364 Field 'subcategory_id' doesn't have a default value (SQL: insert into `category_products` (`category_id`, `product_id`) values (1, 1))

     

    این ها هم بخش از کدها هستند :

     

    دیتابیس category_prodducts

    $table->unsignedBigInteger('product_id');
    $table->unsignedBigInteger('category_id');
    $table->unsignedBigInteger('subcategory_id');
    $table->foreign('product_id')
        ->references('id')
        ->on('products')
        ->onDelete('cascade');
    
    $table->foreign('category_id')
        ->references('id')
        ->on('categories')
        ->onDelete('cascade');
    
    $table->foreign('subcategory_id')
        ->references('id')
        ->on('categories')
        ->onDelete('cascade');
    
    $table->primary(['category_id','product_id','subcategory_id']);

     

    مدل product 

     
    public function CATS(){
    return $this->belongsToMany(Category::class, 'category_products',
    'product_id', 'category_id');

    }

     

    مدل category

    public function products(){
        return $this->belongsToMany(Products::class)->withTimestamps();
    }
        public function SUBCAT(){
        return $this->belongsToMany(Category::class, 'category_category',
            'product_id', 'subcategory_id');
    }

     

    این هم در کنترلر پروداکت

     

    $data->cats()->sync($request->cats,false);
    $data->subcat()->sync($request->subcategory,false);

  3. سلام

    وقتی میخوام اطلاعتی که در دیتابیس هست رو در ادرس read ببینم پیغام

    Trying to get property 'title' of non-object

      میاد. هرکاری هم کردم متاسفانه نشد

     

    اینم نمونه کدها:

    در فایل مدل Post.php:

    protected $fillable=[
        'title','content','password'
        ];

    در فایل مدل User.php:

    public function posts(){
        return $this->hasOne('App\Models\Posts','title','content');

    اینم در فایلwe.php:

    Route::get('/read',function (){
    $user=User::findOrFail(2);
    foreach($user->Posts as $post){
        echo $post->title  ."</br>";
    }
    });

    حتی از حالت ریلیشن هم خارجش کردم که مستقیم به محتویات  پست دسترسی داشته باشم بازم نشد. و اینکه وقتی از foreach استفاده میکنم این پیغام میاد.

    ممنون

×
×
  • جدید...