2016-09-27 7 views
0
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); 
    } 
} 

Ошибка имеет что-то вроде этого.Ошибка Laravel при высоких нагрузках при переносе с 5.1 до 5.3

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

Я даже не могу использовать локальную область имени пользователя на моем вызове контроллера.

Эти модели отлично работают на моем laravel 5.1. Но я пытаюсь перенести свою кодовую базу на 5.3 и им прилипнуть к этим проблемам.

+0

Изменения (интерфейсы и черты) 'User' model like here: https://github.com/laravel/laravel/blob/master/app/User.php –

+0

Я уже изменил модель пользователя. im все равно получает ту же ошибку –

+0

namespace ESP; использование Illuminate \ Foundation \ Auth \ User as Authenticatable; класс Пользователь расширяет Authenticatable { \t protected $ primaryKey = 'id'; \t protected $ fillable = ['username', 'email', 'password']; \t protected $ guarded = ['id']; \t protected $ hidden = ['password', 'remember_token']; \t общественные функции компании() { return $ this-> принадлежитToMany ('ESP \ Company'); } \t public function components() { return $ this-> принадлежит к (ESP \ Component '); } } –

ответ

0

Вы можете проверить приложение/Config/auth.php

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

убедитесь, что вы зарегистрировали свою пользовательскую модель правильно.

+0

Да. Я уже проверил его. модель ESP \ User :: class, так как у меня есть пространство имен приложений с псевдонимом ESP. и насколько касается модели. Я еще не использовал AuthProvider для моей аутентификации. это просто получить, если есть какая-либо запись из моей таблицы пользователей, которая будет загружать связанную компанию. Но все равно бросает ту же самую ошибку. Есть предположения? –

+0

Я пробовал создать новую модель Пользователи, и она работает. Похоже, что модель пользователя по умолчанию ограничена. я не могу получить доступ к любым пользовательским методам, которые я добавляю в модель пользователя по умолчанию. –

 Смежные вопросы

  • Нет связанных вопросов^_^