Laravel Eloquent检索特定信息

时间:2016-03-09 11:17:50

标签: php mysql database laravel eloquent

我刚刚开始使用Laravel Eloquent并坚持检索一些数据。如果有人可以指导我会很棒。

我有两个表(不提用用户表)

研究所

 id    |name   | user_id 

 1     |abc    |22       
 2     |xyz    |32        

现在,institute2(xyz)有以下程序

程序

 id     |institute_id| name | admission_open|

  1     | 2          |exp1  | 1             |
  2     | 2          |exp2  | 0             |

Institute.php

class Institute extends Eloquent
{
  protected  $table = 'institutes';

  public function programs(){
    return $this->hasMany('Program');
   }

}

Program.php

class Program extends Eloquent
{
   protected  $table = 'programs';

   public function institute()
   {
    return $this->belongsTo('Institute');
   }
}

我想要的是什么:

我想获得在课程表中开放招生(admission_open = 1)的学院的名称。

我应该如何编写查询。我必须加入表吗?

4 个答案:

答案 0 :(得分:1)

$tests = Programs::where('admission','1')->get();

现在你得到对象后你可以循环

 foreach($tests as $test) {
$test->institute->name;
}

答案 1 :(得分:0)

有很多方法可以做到这一点。像用户@ujwal dhakal说或加入,但我更喜欢这个:

Institute:::whereHas('program', function($query) {
    $query->where('admission', '=',1);
})->get();

答案 2 :(得分:0)

你可以尝试

$programs = Program::where('admission_open','1')->with('institute')->get();

OR

$programs = Program::where('admission_open','=','1')->with('institute')->get();

$ program将包含具有admission_open = 1和机构数据的程序对象

foreach($programs as $program){
       echo $program->institute->name;
}

答案 3 :(得分:0)

$institutions = Institute:::whereHas('programs', function($query) {
                   $query->where('admission_open', '=',1);
                })->get();

希望这有帮助