0

我正在尝试使用 laravel 微风开发一个简单的自由职业平台。当我尝试在自由职业者和管理员之间实现按摩功能时(工作由管理员而不是客户发布)我收到此错误。

Illuminate\Database\Eloquent\Relations\BelongsToMany::save():参数 #1 ($model) 必须是 Illuminate\Database\Eloquent\Model 类型,给定 null,在 C:\Users\user\freelance_graphicwebefef\app\ 中调用第 23 行的 Http\Controllers\ThreadController.php

线程模型

class Thread extends Model
{
    use HasFactory;
    use SoftDeletes;

    public function Users(){
        return $this->belongsToMany('App\Models\User');
    }

    public function Messages(){
        return $this->hasMany('App\Models\Message','thread_id');
    }

    public function Job(){
        return $this->belongsTo('App\Models\Job');
    }
}

用户模型

namespace App\Models;

use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;
use Laravel\Sanctum\HasApiTokens;
use Laratrust\Traits\LaratrustUserTrait;

class User extends Authenticatable
{
    use LaratrustUserTrait;
    use HasApiTokens, HasFactory, Notifiable;

    /**
     * The attributes that are mass assignable.
     *
     * @var array<int, string>
     */
    protected $fillable = [
        'name',
        'email',
        'password',
    ];

    /**
     * The attributes that should be hidden for serialization.
     *
     * @var array<int, string>
     */
    protected $hidden = [
        'password',
        'remember_token',
    ];

    /**
     * The attributes that should be cast.
     *
     * @var array<string, string>
     */
    protected $casts = [
        'email_verified_at' => 'datetime',
    ];

    public function role(){
        return $this->belongsTo('App\Models\Role');
    }

    public function hasRoleCustom($Role){
        return null !== $this->role()->where('name',$Role)->first();
    }

    public function jobs(){
        return $this->hasMany('App\Models\Job','user_id');
    }

    public function Favorites(){
        return $this->hasMany('App\Models\Favorites');
    }

    public function Threads(){
        return $this->belongsToMany('App\Models\Thread');
    }

    public function Message(){
        return $this->hasMany('App\Models\Message','user_id');
    }
}

线程控制器

class ThreadController extends Controller
{
    public function createThread(Request $request){
        $this->validate($request,[
            'job_id'=>'required|integer'
        ]);
        $Thread=new Thread;
        $Thread->job_id=$request->input('job_id');
        $Thread->save();

        $Freelancer=Auth::user();
        $Admin=$Thread->Job->user;
        $Thread->Users()->save($Freelancer);//**line 22**
        $Thread->Users()->save($Admin);//**line 23**

        return redirect('/threads/'.$Thread->id);

    }

    public function createMessage(Request $request,$id){
        $this->validate($request,[
            'message'=>'required|string',
        ]);
        $Message=new Message();
        $Message->message=$request->input('message');
        $Message->thread_id=$id;

        $User=Auth::user();
        $User->Message()->save($Message);

        return redirect('/threads/'.$id)->with('success','Message Saved');

    }

    public function showThread($id){
        $Thread=Thread::find($id);
        return view('threads.show')->with('Thread',$Thread);
    }
}

PHPStorm 在第 22 行给了我这个消息

$Thread->Users()->save($Freelancer);

提供了 '\Illuminate\Database\Eloquent\Model'、'\Illuminate\Contracts\Auth\Authenticatable' 类型的预期参数

Thread Table 和 thread_users 表显示了一些记录。

4

0 回答 0