Laravel在从5.1迁移到5.3时急切加载关系时出错

时间:2016-09-27 07:15:43

标签: php laravel orm eloquent eager-loading

User.php 

namespace ESP;

use Illuminate\Auth\Authenticatable; 

use Illuminate\Database\Eloquent\Model; 

use Illuminate\Auth\Passwords\CanResetPassword; 

use Illuminate\Contracts\Auth\Authenticatable as AuthenticatableContract;

use Illuminate\Contracts\Auth\CanResetPassword as CanResetPasswordContract;

use DB;

class User extends Model implements AuthenticatableContract, CanResetPasswordContract 
{

    use Authenticatable, CanResetPassword;

    protected $table = 'users';

    protected $primaryKey = 'id';

    public function companies(){
           return $this->belongsToMany('ESP\Company', 'company_user', 'user_id', 'company_id');
    }

   public function scopeUsername($query, $username){

    return $query->where('username', '=', $username);
   }
}


Company.php 

namespace ESP;

use Illuminate\Database\Eloquent\Model; use DB;

class Company extends Model {

    protected $table = 'companies';

    protected $primaryKey = 'id';

    public function users(){
        return $this->belongsToMany('ESP\User');
    }
}

LoginController.php

namespace ESP\Http\Controllers\Login;

use ESP\Http\Requests;

use ESP\Http\Controllers\Controller; use ESP\CustomClass\LDAP\adLDAP;

use Illuminate\Http\Request; 

use Illuminate\Support\Facades\Redirect;

use ESP\LoginAttempts; 

use ESP\Helpers\UtilityHelper;

use ESP\User;

use DB; 

use Auth; 

use Session; 

use View; 

use Paginator; 

use DateTime; 

use Input;

class LoginController extends Controller 
{

    private function _authenticateClient($username, $password)
    {
        $g = User::with('companies')
            ->where( 'username', $username )
            ->where( 'password', md5( $password ) )
            ->get();
        dd($g);
    }
}

错误有类似的内容。

BadMethodCallException in Builder.php line 2405: Call to undefined method Illuminate\Database\Query\Builder::companies()

我甚至无法在控制器调用中使用本地范围用户名。

这款型号在我的laravel 5.1上运行得非常好。但我试图将我的代码库迁移到5.3并且我坚持这个问题。

1 个答案:

答案 0 :(得分:0)

您可以查看app / config / auth.php

'providers' => [
    'users' => [
        'driver' => 'eloquent',
        'model' => App\ESP\User::class,
    ]
],

确保您正确注册了用户模型。