• Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Register
  • Login
Bagisto Forum

Bagisto

  • Register
  • Login
  • Search
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups

Storing Data through Repository Error

General Discussion
2
7
467
Loading More Posts
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • H
    himanshu-kmr last edited by 5 Mar 2021, 10:18

    Hello,

    I have created a new package with name Blogs and Provider is Ebest. Below is my code:-

    packages/Ebest/Blogs/src/Models/BlogCategory.php

    use Illuminate\Database\Eloquent\Model;
    use Webkul\Core\Eloquent\TranslatableModel;
    use Kalnoy\Nestedset\NodeTrait;
    use Illuminate\Support\Facades\Storage;
    use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
    use Ebest\Blogs\Contracts\BlogCategory as BlogCategoryContract;
    use Ebest\Blogs\Repositories\BlogsCategoryRepository;
    
    class BlogCategory extends Model implements BlogCategoryContract
    {
        use NodeTrait;
    
        public $translatedAttributes = [
            'name',
            'description',
            'slug',
            'url_path',
            'meta_title',
            'meta_description',
            'meta_keywords',
        ];
    
        protected $fillable = [
            'position',
            'status',
        ];
    
        protected $with = ['translations'];
    
        public function image_url()
        {
            if (! $this->image)
                return;
    
            return Storage::url($this->image);
        }
    
        public function getImageUrlAttribute()
        {
            return $this->image_url();
        }
    }
    
    

    packages/Ebest/Blogs/src/Models/BlogCategoryProxy.php

    <?php
    
    namespace Ebest\Blogs\Models;
    
    use Konekt\Concord\Proxies\ModelProxy;
    
    class BlogCategoryProxy extends ModelProxy
    {
    
    }
    

    packages/Ebest/Blogs/src/Contracts/BlogCategory.php

    <?php
    
    namespace Ebest\Blogs\Contracts;
    
    interface BlogCategory
    {
        
    }
    

    packages/Ebest/Blogs/src/Repositories/BlogCategoryRepository.php

    <?php
    
    namespace Ebest\Blogs\Repositories;
    
    use Illuminate\Container\Container as App;
    use Illuminate\Support\Facades\Storage;
    use Illuminate\Support\Facades\Event;
    use Webkul\Core\Eloquent\Repository;
    use Ebest\BLogs\Models\BlogCategory;
    use Illuminate\Database\Eloquent\ModelNotFoundException;
    use Illuminate\Support\Facades\DB;
    
    class BlogsCategoryRepository extends Repository
    {
        /**
         * Specify Model class name
         *
         * @return mixed
         */
        function model()
        {
            return 'Ebest\Blogs\Contracts\BlogCategory';
        }
    
        public function create(array $data)
        {
            // Event::dispatch('catalog.category.create.before');
    
            if (isset($data['locale']) && $data['locale'] == 'all') {
                $model = app()->make($this->model());
    
                foreach (core()->getAllLocales() as $locale) {
                    foreach ($model->translatedAttributes as $attribute) {
                        if (isset($data[$attribute])) {
                            $data[$locale->code][$attribute] = $data[$attribute];
                            $data[$locale->code]['locale_id'] = $locale->id;
                        }
                    }
                }
            }
    print_r($data); exit();
            $category = $this->model->create($data);
    
            $this->uploadImages($data, $category);
    
            if (isset($data['attributes'])) {
                $category->filterableAttributes()->sync($data['attributes']);
            }
    
            // Event::dispatch('catalog.category.create.after', $category);
    
            return $category;
        }
    }
    

    packages/Ebest/Blogs/src/Providers/ModuleServiceProvider.php

    <?php
    
    namespace Ebest\Blogs\Providers;
    
    use Konekt\Concord\BaseModuleServiceProvider;
    
    class ModuleServiceProvider extends BaseModuleServiceProvider
    {
        protected $models = [
            Ebest\Blogs\Models\BlogCategory::class,
        ];
    }
    

    config/concord.php

    <?php
    
    return [
        'modules' => [
            /**
             * Example:
             * VendorA\ModuleX\Providers\ModuleServiceProvider::class,
             * VendorB\ModuleY\Providers\ModuleServiceProvider::class
             *
             */
    
            \Webkul\Attribute\Providers\ModuleServiceProvider::class,
            \Webkul\BookingProduct\Providers\ModuleServiceProvider::class,
            \Webkul\Category\Providers\ModuleServiceProvider::class,
            \Webkul\Checkout\Providers\ModuleServiceProvider::class,
            \Webkul\Core\Providers\ModuleServiceProvider::class,
            \Webkul\Customer\Providers\ModuleServiceProvider::class,
            \Webkul\Inventory\Providers\ModuleServiceProvider::class,
            \Webkul\Product\Providers\ModuleServiceProvider::class,
            \Webkul\Sales\Providers\ModuleServiceProvider::class,
            \Webkul\Tax\Providers\ModuleServiceProvider::class,
            \Webkul\User\Providers\ModuleServiceProvider::class,
            \Webkul\CatalogRule\Providers\ModuleServiceProvider::class,
            \Webkul\CartRule\Providers\ModuleServiceProvider::class,
            \Webkul\CMS\Providers\ModuleServiceProvider::class,
            \Webkul\Velocity\Providers\ModuleServiceProvider::class,
            \Webkul\SocialLogin\Providers\ModuleServiceProvider::class,
            \Ebest\Blogs\Providers\ModuleServiceProvider::class,
        ]
    ];
    

    Whenever i am running the project it gives error as: "

    Class Ebest\Blogs\Providers\Ebest\Blogs\Models\BlogCategory must extend or implement Ebest\Blogs\Providers\Ebest\Blogs\Contracts\BlogCategory.
    
      at D:\xampp\htdocs\bagisto\vendor\konekt\concord\src\Concord.php:126
        122|      */
        123|     public function registerModel(string $abstract, string $concrete, $registerRouteModel = true)
        124|     {
        125|         if (!is_subclass_of($concrete, $abstract, true)) {
      > 126|             throw new InvalidArgumentException("Class {$concrete} must extend or implement {$abstract}. ");
        127|         }
        128| 
        129|         $this->models[$abstract] = $concrete;
        130|         $this->app->alias($concrete, $abstract);
    
      1   D:\xampp\htdocs\bagisto\vendor\konekt\concord\src\BaseServiceProvider.php:262
          Konekt\Concord\Concord::registerModel("Ebest\Blogs\Providers\Ebest\Blogs\Contracts\BlogCategory", "Ebest\Blogs\Providers\Ebest\Blogs\Models\BlogCategory")
    
      2   D:\xampp\htdocs\bagisto\vendor\konekt\concord\src\BaseServiceProvider.php:98
          Konekt\Concord\BaseServiceProvider::registerModels()
    
    D:\xampp\htdocs\bagisto>ss Ebest\Blogs\Providers\Ebest\Blogs\Models\BlogCategory must extend or
    

    Please Help.
    Thanking You

    1 Reply Last reply Reply Quote 0
    • devansh-webkul
      devansh-webkul last edited by 8 Mar 2021, 04:25

      Hi @himanshu-kmr,

      Just run php artisan config:cache.

      1 Reply Last reply Reply Quote 0
      • H
        himanshu-kmr last edited by 10 Mar 2021, 10:45

        I tried several time by optimizing and also clearing the cache. But still problem is there...

        1 Reply Last reply Reply Quote 0
        • devansh-webkul
          devansh-webkul last edited by 11 Mar 2021, 04:52

          Hi @himanshu-kmr,

          Look at this namespace Ebest\Blogs\Providers\Ebest\Blogs\Models\BlogCategory. Something is wrong with this namespace. It should be like this Ebest\Blogs\Models\BlogCategory.

          Please check the namespace. A namespace is not correct.

          1 Reply Last reply Reply Quote 0
          • H
            himanshu-kmr last edited by 11 Mar 2021, 15:58

            @devansh-webkul said in Storing Data through Repository Error:

            BlogCategory

            In the BlogCategory model the name space is namespace Ebest\Blogs\Models;

            1 Reply Last reply Reply Quote 0
            • devansh-webkul
              devansh-webkul last edited by 12 Mar 2021, 05:52

              Hi @himanshu-kmr,

              If you are sure that namespace is correct then do one thing. Go to bootstrap/cache folder and delete all files inside that.

              After that run composer dump-autoload and then php artisan optimize.

              If still facing any issue then check each file and namespace because it is a namespace issue check that errors it's clearly specifying the wrong namespace.

              1 Reply Last reply Reply Quote 0
              • H
                himanshu-kmr last edited by 12 Mar 2021, 12:04

                @devansh-webkul Thankyou. The problem was in ModuleServiceProvider

                I changed

                protected $models = [
                        Ebest\Blogs\Models\BlogCategory::class,
                    ];
                

                to
                protected $models = [
                \Ebest\Blogs\Models\BlogCategory::class,
                ];

                This problem has been resolved.

                Now if i am running the project i am getting error as

                Class 'Ebest\Blogs\Models\BlogCategoryProxy ' not found

                at D:\xampp\htdocs\bagisto\vendor\konekt\concord\src\Concord.php:269

                1 Reply Last reply Reply Quote 0
                1 out of 7
                • First post
                  1/7
                  Last post