我作为表格中的第一位学生登录。我想使用Eloquent模型检索与我属于同一部门并且尚未发送请求的所有学生的列表。
//Requestt.php
public function student()
{
return $this->belongsto('App\Student','id', 'Sender_id','Rec_id');
}
//Student.php
public function requestts()
{
return $this->hasMany('App\Requestt', 'id');
}
public function department()
{
return $this->belongsTo('App\Department');
}
注意:介意请求中的双“ t”。
答案 0 :(得分:0)
可能的解决方案
// you may have the logged in student in your hand.
// for the example, I'll take the first.
$logged_in_student = Student::first();
$other_students = Student::where('department_id', $logged_in_student->department_id)
->whereDoesntHave('requestts', function($query) use($logged_in_student) {
$query->where('Rec_id', $logged_in_student->id);
})
->get();
说明
第一个where
子句用于过滤同一部门的学生。
第二个whereDoesntHave
子句用于从登录的学生中筛选出没有requestts
的学生。
答案 1 :(得分:0)
在这里我们可能有两种情况
第一个:
Student::where('department_id', Auth::user()->department_id)->doesntHave('requestts')->get();
在这里,我们通过让所有学生和auth用户位于同一部门来查询学生模型。然后检查那些没有请求的学生。
注意:如果IF请求表具有发送者ID和接收者ID, 引用学生表,您首先需要具有两个功能 一个与发送者有关,第二个与接收者有关。
requests(){
return $this->hasMany('App\Requestt', 'Rec_id');
}
第二种情况是requestts表,在此情况下,它仅引用发件人,您必须先获取已经发送请求的学生,然后再获取没有请求的学生
Student::where('department_id', Auth::user()->department_id)->whereNotIn('id', Student::requestts()->pluck('Sender_id'))->get();
说实话,您的表名字段有点模棱两可,如果不能解决您的问题,请进一步说明您的需求。