我想退回特定用户的项目?

我想返回经过身份验证的用户的项目,但没有得到任何东西。我知道记录存在于数据库中。


这是我的模型Project:


public function users(){

    return $this->hasMany(User::class);

}

这是我的模型User:


public function projects(){

    return $this->hasMany(Projet::class,'user_id');

}

这是控制器功能:


public function projetuser(){

   $user = User::find(auth()->user()->id);

   return $user->projects;

}

这是我的user_projet迁移:


public function up()

{

    Schema::create('user_projet', function (Blueprint $table) {

        $table->bigIncrements('id');


        $table->unsignedBigInteger('projet_id');

        $table->foreign('projet_id')->references('id')->on('projets')->onDelete('cascade');


        $table->unsignedBigInteger('user_id');

        $table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');


        $table->string('membre')->nullbale();

        $table->timestamps();

    });

}


慕斯王
浏览 79回答 1
1回答

杨__羊羊

您错误地定义了多对多关系。使用belongsToMany()而不是hasMany(). 因为您的数据透视表名称不是标准的(它应该是字母顺序projet_user),所以您还需要将它包含在关系定义中。<?phpuse Illuminate\Database\Eloquent\Model;class Projet extends Model{&nbsp; &nbsp; public function users()&nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; return $this->belongsToMany(User::class, 'user_projet');&nbsp; &nbsp; }}class User extends Model{&nbsp; &nbsp; public function projets(){&nbsp; &nbsp; &nbsp; &nbsp; return $this->belongsToMany(Projet::class, 'user_projet');&nbsp; &nbsp; }}现在在你的控制器中你可以这样做:public function projetuser(){&nbsp; &nbsp; return auth()->user->projets;}您的问题似乎在“项目”和“项目”之间有所不同。我认为“projet”是正确的拼写,但尽量保持一致。另请注意迁移中的错字:nullbale.
打开App,查看更多内容
随时随地看视频慕课网APP