Search code examples
laravellaravel-5.3laravel-5.4eloquent

How can I establish a relationship a Model class with another model class of folder in laravel eloquent??


Folder Structure:

app
|-Admin.php
|-Admin
     |
     |-Product.php





    Admin.php
    --------------------------------------------------------
    namespace App;

    use Illuminate\Foundation\Auth\User as Authenticatable;

    class Admin extends Authenticatable
    {
        public function erp()
        {
            return $this->belongsToMany(Admin\Product::class);
        }
    }
    -----------------------------------------------------------



    Product.php
    -----------------------------------------------------------
    namespace App\Admin;

    use Illuminate\Database\Eloquent\Model;

    class Product extends Model
    {

        protected $primaryKey = 'productcode';
        public $incrementing = false;

        public function updatedBy()
        {
            return $this->belongsTo(Admin::class);
        }
    }

-----------------------------------------------------------

But got an error Class 'Admin::class' not found any solution??


Solution

  • Use correct namespaces:

    Admin model:

    namespace App;
    
    use Illuminate\Foundation\Auth\User as Authenticatable;
    use App\Admin\Product;
    
    class Admin extends Authenticatable
    {
        public function erp()
        {
            return $this->belongsToMany(Product::class);
        }
    }
    

    Product model:

    namespace App\Admin;
    
    use Illuminate\Database\Eloquent\Model;
    use App\Admin;
    
    class Product extends Model
    {
    
        protected $primaryKey = 'productcode';
        public $incrementing = false;
    
        public function updatedBy()
        {
            return $this->belongsTo(Admin::class);
        }
    }
    

    Or add namespace of a model as string, for example App\Admin