Bagisto Forum

    Bagisto

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

    Storing Data through Repository Error

    General Discussion
    2
    7
    451
    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

      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

        Hi @himanshu-kmr,

        Just run php artisan config:cache.

        1 Reply Last reply Reply Quote 0
        • H
          himanshu-kmr last edited by

          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

            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

              @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

                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

                  @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
                  • First post
                    Last post