Tôi có mối quan hệ đa hình một đến chính xác như được mô tả in documentation, ngoại trừ tôi có phiếu bầu thay vì ảnh và cột bầu chọn số nguyên trong bảng phiếu bầu. Như thế:Laravel 5.2 phạm vi truy vấn về mối quan hệ đa hình
-votes
--id
--vote
--voteable_id
--voteable_type
Mô hình Vote có phương pháp voteable:
public function voteable()
{
return $this->morphTo();
}
Nhưng đối với mô hình mà tôi muốn có phiếu kèm theo (trang trong ví dụ này) Tôi đã tạo ra một VoteableTrait, trong đó có phương thức vote() morphMany và phạm vi tôi đang cố gắng làm việc. Phạm vi sẽ thêm tổng của tất cả các phiếu bầu thuộc về một mô hình nhất định và đặt hàng các mô hình gốc bằng tổng. Phạm vi như tôi đã thử:
public function scopeWithVotesTrait($query)
{
return $query->with(['votes' => function($q){
$q->select(\DB::raw("SUM(vote) AS votes"), 'voteable_id')->first();
}]);
}
Nhưng với điều này tôi không thể orderBởi như Laravel thực hiện 2 truy vấn khác nhau, một cho mô hình mẹ và một cho phiếu bầu dường như. Kết quả của việc trang :: withVotesTrait() -> đầu tiên() đặt phiếu trong một mảng:
{
"id": 1,
"votes": [
{
"votes": "-1",
"voteable_id": 1
}
]
}
Ý tưởng khác tôi đã có được để thực hiện một tham gia thay vì -> với() như thế:
public function scopeWithVotesTrait($query, $model, $table)
{
return $query->join('votes', function($join) use($model, $table)
{
$join->on('votes.voteable_id', '=', $table . '.id')
->where('votes.voteable_type', '=', $model);
})->select('*', \DB::raw('sum(vote) as votes'))
->orderBy('votes')->groupBy($table . '.id');
}
Nhưng nếu tôi phải đặt thủ công $ model ('App \ ParentModel') và $ table ('parent_models') mỗi khi tôi sử dụng phạm vi, loại nhịp đập đó nhằm mục đích đưa nó vào một đặc điểm.
Vậy có cách nào để sắp xếp hiệu quả theo tổng số phiếu bầu trong ví dụ đầu tiên về phạm vi của tôi không? Hoặc là có bất kỳ phương pháp tĩnh bạn có thể gọi từ Eloquent Model sẽ trả về tên mô hình và một cho mô hình bảng để làm cho ví dụ thứ hai làm việc?
Bất kỳ ý tưởng nào khác về cách tạo phạm vi có thể đính kèm tổng số phiếu bầu vào mô hình và thứ tự gốc của nó?