story ks
story ks

Reputation: 850

Laravel 5.4 Auth::User() with relationship not working

I have Table Vendors (for test Auth relationship) and Table Vendor_users,

But i use Auth::user() it not relationship

enter image description here

And This Database

enter image description here

In Vendor model

    protected $table = 'vendor_users';
 public function Vendor_test(){
        return $this->belongsTo(Vendor_test::class);
    }

And Vendor_test model

 protected $table = 'vendors';

public function Vendor(){
    return $this->hasMany(Vendor::class);
}

Upvotes: 2

Views: 5154

Answers (2)

DsRaj
DsRaj

Reputation: 2328

As per the discussion and the table structure you have, Add the relation function in your model vendor_users.

protected $table = 'vendor_users';
public function vendor_contact() 
{ 
   return $this->belongsTo(Vendor_contact::class, 'vendor_contact_id'); 
} 

get the user with the vendor_contact and check

$user = Auth::user()->with('vendor_contact')->first(); //  As you asked with for auth
//OR
$user = Auth::user()->load('vendor_contact'); // From the rkj answer as I found this good.
// OR
$user = Vendor::find(1)->with('vendor_contact')->first(); 
dd($user);

Upvotes: 3

rkj
rkj

Reputation: 8287

from chat and your current table structure, you should have relation like this

in Vendor Model

public function vendor_contact() 
{ 
  return $this->belongsTo(Vendor_contact::class, 'vendor_contact_id'); 
}

in Vendor_contact Model

protected $primaryKey = 'vendContactId'; //check this 

public function vendor() 
{ 
  return $this->hasOne(Vendor::class, 'vendor_contact_id'); 
}

Now use lazy eager loading for loading vendor_contact relationship

Auth::user()->load('vendor_contact');
dd(Auth::user());

Upvotes: 4

Related Questions