我在用户模型和朋友模型之间有关系
用户.php
public function friends()
{
return $this->hasMany(Friend::class);
}
该关系实际上返回用户和朋友之间的外键列(user_id)等于当前用户的id的所有记录,但我还想返回当前用户的id位于朋友表中另一列中的记录,该列的名称是friend_id,这这是我的尝试
public function friends()
{
return $this->hasMany(Friend::class,'user_id','friend_id');
}
它实际上没有返回正确的记录
我认为没有直接的方法,但你可以尝试建立 2 个关系并将它们合并为一个关系
public function friends() {
return $this->hasMany(Friend::class);
}
public function additionalfriends() {
return $this->hasMany(Friend::class, 'friend_id');
}
public function allfreinds() {
return $this->friends->merge($this->additionalfriends);
}
您可以尝试的另一个解决方案是
public function friends()
{
return Friend::where(function($query) {
$query->where('user_id',$this->id)
->orWhere('friend_id',$this->id);
});
}
用这个
// 用户模型
public function tasks(){
return $this->hasMany(TaskUser::class,'user_id','id')->latest();
}
//用户任务模型
public function task(){
return $this->belongsTo(Task::class,'task_id','id');
}
//控制器
$user = User::with(['tasks' => function ($query) {
$query->with('task');
}])->find(auth('api')->id());
return $this->successResponse(data:
TaskResource::collection($user->tasks->pluck('task')->where('dueDate',"2021-09-07")),
message:'Success',code:200
);
希望有用