我想返回经过身份验证的用户的项目,但没有得到任何东西。我知道记录存在于数据库中。这是我的模型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(); });}
1 回答
杨__羊羊
TA贡献1943条经验 获得超7个赞
您错误地定义了多对多关系。使用belongsToMany()而不是hasMany(). 因为您的数据透视表名称不是标准的(它应该是字母顺序projet_user),所以您还需要将它包含在关系定义中。
<?php
use Illuminate\Database\Eloquent\Model;
class Projet extends Model
{
public function users()
{
return $this->belongsToMany(User::class, 'user_projet');
}
}
class User extends Model
{
public function projets(){
return $this->belongsToMany(Projet::class, 'user_projet');
}
}
现在在你的控制器中你可以这样做:
public function projetuser(){
return auth()->user->projets;
}
您的问题似乎在“项目”和“项目”之间有所不同。我认为“projet”是正确的拼写,但尽量保持一致。
另请注意迁移中的错字:nullbale.
- 1 回答
- 0 关注
- 78 浏览
添加回答
举报
0/150
提交
取消