我刚刚开始使用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)的学院的名称。
我应该如何编写查询。我必须加入表吗?
答案 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();
希望这有帮助