man*_*ril 5 php laravel laravel-4
我有一个名为buildings和的表flats
建筑物表
Building_Id | Building_Name | .......| Building_Owned_By | ....
Run Code Online (Sandbox Code Playgroud)
公寓桌
Flat_Id | Flat_Name | ........| Fk_Building_Id | .....
Run Code Online (Sandbox Code Playgroud)
在我的模型中
建造
class Building extends Eloquent {
protected $primaryKey = "Building_Id";
protected $table = 'buildings';
.......
.......
public function flat()
{
return $this->hasMany('Flat', 'Fk_Building_Id', 'Building_Id');
}
}
Run Code Online (Sandbox Code Playgroud)
平面
class Flat extends Eloquent {
protected $primaryKey = "Flat_Id";
protected $table = 'flats';
.......
.......
public function building() {
return $this->belongsTo('Building','Fk_Building_Id', 'Building_Id');
}
}
Run Code Online (Sandbox Code Playgroud)
在我的控制器里
$flats = Flat::where('Fk_Building_Id', '=',$buildingid)
->where('Building_Owned_By', '=',Auth::user()->Login_Id)
->orderBy('Flat_Name')
->get(array('Flat_Id as flatId', 'Flat_Name as flatName'))
->toArray();
Run Code Online (Sandbox Code Playgroud)
但它什么也没有回报.
我们如何在Eloquent Orm中执行内部连接(我不想使用流畅的查询)?
更新
感谢@Creator的宝贵时间和帮助.他帮助我找到了这个.解决方案是我们必须使用whereHas并将代码重写为
$flats = Flat::whereHas('building', function($q){
$q->where('Building_Owned_By', '=',Auth::user()->Login_Id);
})
->where('Fk_Building_Id', '=',$buildingid)
->orderBy('Flat_Name')
->get(array('Flat_Id as flatId', 'Flat_Name as flatName'))
->toArray();
Run Code Online (Sandbox Code Playgroud)
做这个 :
class Building extends Eloquent {
protected $primaryKey = "Building_Id";
protected $table = 'buildings';
.......
.......
public function flat()
{
return $this->HasMany('Flat', 'Fk_Building_Id', 'Building_Id');
}
Run Code Online (Sandbox Code Playgroud)
}
查询获取包含所有公寓的建筑物:
Building::with('flat')->(some_condition)->get();
class Flat extends Eloquent {
protected $primaryKey = "Flat_Id";
protected $table = 'flats';
.......
.......
public function building() {
return $this->HasOne('Building','Fk_Building_Id', 'Building_Id');
}
}
Run Code Online (Sandbox Code Playgroud)
查询以获取建筑物信息
Flat::with('building')
->where('Building_Owned_By', '=',Auth::user()->Login_Id)
->orderBy('Flat_Name')
->get(array('Flat_Id as flatId', 'Flat_Name as flatName'))
->toArray();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13906 次 |
| 最近记录: |