如何在laravel中的Eloquent ORM中编写内部联接?

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)

Ani*_*rma 4

做这个 :

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)