Laravel Eloquent加入表和计数相关

fef*_*efe 5 sql join eloquent laravel-4

如何在考虑以下表结构的情况下使用与Eloquent的连接:

我有一张特色表

---------------------
ID    | Name 
---------------------
1     | Property Name
Run Code Online (Sandbox Code Playgroud)

比我有房间

----------------------
RoomID | Property
----------------------
A-212  | 1
---------------------- 
F-1231 | 1
Run Code Online (Sandbox Code Playgroud)

here属性是外键,而不是我想获取所有属性并计算它们各有多少个房间

重审所有的查询看起来像

   class PropertiesRepository extends EloquentBaseRepository implements PropertiesInterface
{

    use TaggableRepository;

    /**
     * Construct 
     * @param Properties $properties 
     */
    public function __construct( Properties $properties )
    {
        $this->model = $properties;
    }
     /**
     * Get all properties joining rooms
     * @return Properties
     */
    public function getAll()
    {
        return $this->model->get();
    }
}
Run Code Online (Sandbox Code Playgroud)

如何扩展此查询以获得所需的结果?

Jar*_*zyk 18

$this->model->leftJoin('Rooms', 'Properties.ID', '=', 'Rooms.Property')
  ->selectRaw('Properties.*, count(Rooms.RoomID) as RoomsCount')
  ->groupBy('Properties.ID')
  ->get();
Run Code Online (Sandbox Code Playgroud)


Hen*_*var 12

在您的属性模型类上定义关系:

<?php 

namespace App\Models;

class Property extends Model {
  public function rooms() {
    return $this->hasMany(Room::class);
  }
}

Run Code Online (Sandbox Code Playgroud)
$properties = Property::withCount(['rooms'])->get();
Run Code Online (Sandbox Code Playgroud)

这将在结果中添加一个 rooms_count。