简体   繁体   中英

Codeigniter Eloquent querying relationships

I have two tables like this:

users: users_id | name | users_roles_id

users_roles: users_roles_id | roles

I want to join these tables. I have tried the following:

use Elegant\Model as Eloquent;

class User extends Eloquent {
    protected $table = 'users';

    function getRoles($userId){
        User::join('users_roles', 'users_roles.users_roles_id', '=', 'users.users_roles_id')
            ->select('*')
            ->get();    
    }

    public function user_role() {
        return $this->belongsTo('users_roles','users_roles_id');
    }
}

But I don't know how to join these to display it. Thanks

Try replace this

return $this->belongsTo('users_roles', 'users_roles_id');

With

return $this->belongsTo('users_roles', 'users_roles_id', 'users_id');

Read more Eloquent Laravel document for name convenient

i did

    class User extends Eloquent {
        protected $table = 'users';

        function getRoles($userId){
            return $this->where('id', $userId)->join('users_roles', 'users.users_roles_id = users_roles.users_roles_id')->get();  
        }
    }

it's working ;-)

You create a

core/MY_Model.php

<?php

require_once FCPATH . 'filelocation/Eloquent.php';

class MY_Model extends Eloquent {

    public function __construct() {
       parent::__construct();
    }

}

Then on the model

models > User_model.php

<?php 

class User_model extends MY_Model {
   public function __construct() {
       parent::__construct();
    }
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM