Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 升级至laravel 5.3“版本;调用undefined method\Database\Query\Builder";错误_Php_Laravel_Laravel 5_Eloquent_Laravel 5.3 - Fatal编程技术网

Php 升级至laravel 5.3“版本;调用undefined method\Database\Query\Builder";错误

Php 升级至laravel 5.3“版本;调用undefined method\Database\Query\Builder";错误,php,laravel,laravel-5,eloquent,laravel-5.3,Php,Laravel,Laravel 5,Eloquent,Laravel 5.3,我有一个Laravel 5.2项目,效果很好。我尝试将其升级到Laravel 5.3,但出现以下错误: Builder.php第2448行中的BadMethodCallException:调用未定义的方法Illumb\Database\Query\Builder::friends() 或者我的User.php模型中的任何其他方法都有相同的错误。 例如,当我在HomeController.php中评论friends()时,我有: Builder.php第2448行中的BadMethodCallEx

我有一个Laravel 5.2项目,效果很好。我尝试将其升级到Laravel 5.3,但出现以下错误:

Builder.php第2448行中的BadMethodCallException:调用未定义的方法Illumb\Database\Query\Builder::friends()

或者我的
User.php
模型中的任何其他方法都有相同的错误。 例如,当我在
HomeController.php
中评论
friends()
时,我有:

Builder.php第2448行中的BadMethodCallException:调用未定义的方法\Database\Query\Builder::getNameOrUsername()

这是我的
用户
型号:

<?php

namespace Activentum\Models;

use Activentum\Models\Status;
use Illuminate\Auth\Authenticatable;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Contracts\Auth\Authenticatable as AuthenticatableContract ;

class User extends Model implements AuthenticatableContract
{
    use Authenticatable;

    protected $table = 'users';

    protected $fillable = [
        'username',
        'email', 
        'password',
        'first_name',
        'last_name',
        'location',


    ];

    protected $hidden = [
        'password',
        'remember_token',
    ];


    public  function getName()
    {
        if ($this->first_name && $this->last_name){
            return "{$this->first_name} {$this->last_name}";
        }

        if ($this->first_name) {
            return $this->first_name;
        }
        return null;
    }


    public function getNameOrUsername()
    {
        return $this->getName() ?:$this->username;
    }    
    public function getFirstnameOrUsername()
    {
        return $this->first_name ?: $this->username;
    }
    public function getAvatarUrl()
    {
        return "https://www.gravatar.com/avatar/
        {{md5($this->email)}}?d=mm&s=40";
    }



    public function statuses()
    {
        return $this->hasMany('Activentum\Models\Status', 'user_id');
    }
    public function likes()
    {
        return $this->hasMany('Activentum\Models\Like', 'user_id');
    }
    public function friendsOfMine()
    {
        return $this->belongsToMany('Activentum\Models\User',
         'friends', 'user_id','friend_id');    
    }

    public function friendOf()
    {
        return $this->belongsToMany('Activentum\Models\User',
         'friends', 'friend_id', 'user_id');    

    }

    public function friends()
    {
        return $this->friendsOfMine()->wherePivot('accepted', true)->get()->
            merge($this->friendOf()->wherePivot('accepted', true)->get());
    }

    public function friendRequests()
    {
        return $this->friendsOfMine()->wherePivot('accepted', false)->get();
    }    


    public function friendRequestsPending()
    {
        return $this->friendOf()->wherePivot('accepted', false)->get();
    }

    public function hasFriendRequestsPending(User  $user)
    {
        return (bool) $this->friendRequestsPending()->
        where('id', $user->id)->count();

    }

    public function hasFriendRequestsReceived(User  $user)
    {
        return (bool) $this->friendRequests()->where('id', $user->id)->count();
    }

    public function addFriend(User  $user)
    {
      $this->friendOf()->attach($user->id);
    }

    public function deleteFriend(User $user)
    {
        $this->friendOf()->detach($user->id);
        $this->friendsOfMine()->detach($user->id);  
    }

    public function acceptFriendRequest(User  $user)
    {
        $this->friendRequests()->where('id', $user->id)->first()
        ->pivot->update(['accepted'=> true, ]);
    }

    public function isFriendWith(User $user)
    {
        return (bool) $this->friends()->where('id', $user->id)->count();
    }
    public function hasLikedStatus(Status $status)
    {
        return (bool) $status->likes
        ->where('user_id', $this->id)->count();

    }
}

project似乎看不到模型。我的模型位于
app/models

的models文件夹中,您需要更新
config/auth.php
文件以查看正确的
用户
模型。新安装将查看位于
App/User.php
的默认
\App\User
模型。您需要更新身份验证配置中的
模型
键,以查看位于
App/Models/User.php的自定义
\App\Models\User
模型

I updated
config/auth.php
config/services.php
/database/factories/ModelFactory.php
并将
Activentum\User
更改为
Activentum\Models\User
,现在可以使用了。
<?php
    namespace Activentum\Http\Controllers;

    use Auth;
    use Activentum\Models\Status;

    class HomeController extends  Controller 
     {

    public function index()
    {
        if (Auth::check()) {
            $statuses = Status::notReply()->where(function($query){
                return $query->where ('user_id', Auth::user()->id)
                ->orWhereIn('user_id',Auth::user()->friends()->pluck('id')
                    );
            })
            ->orderBy('created_at','desc')->
            paginate(14);

            return view ('timeline.index')
                ->with('statuses', $statuses);
        }

        return view('home');
    }

}