2014-09-03 55 views
1

我正在與Laravel創建一個Web應用程序,但我必須使用一個可怕的CMS。訪問器和突變體的where子句laravel

的CMS生成一些條目,如 「info10」, 「info20」 等數據庫...

所以,想象一下這個表 「薄煎餅」:

id | info1 | info25 

Info1代表價格的煎餅和Info25代表數量

隨着存取函數我可以使用$pancake->price$pancake->quantity來設置和獲取DATAS,但就像我如何執行查詢:

Pancake::where('price', 25)->count()Pancake::where('info1', 25)->count()

回答

2

有可能實現與這個包https://github.com/jarektkaczyk/eloquence/wiki/Mappable


可以以相同的方式使用範圍:

public function scopePriceWhere($query, $price, $operator = '=', $bool = 'and') 
{ 
    $query->where('info1', $operator, $price, $bool); 
} 

// then 
Pancake::priceWhere(25); // where('info1', 25); 
Pancake::priceWhere(25, '>'); // where('info1', '>', 25); 
Pancake::priceWhere(25, '=', 'or'); // orWhere('info1', 25); 

不要使用方法scopeWherePrice因爲wherePrice是動態調用將導致WHERE price = ...

+0

是的,我想到了這個,但它不是最好的解決方案,也許有可能鉤住where子句中傳遞的字符串params,orderby等等,以正確的條目進行轉換。 – 2014-09-03 23:00:21

+0

沒有通用的方法,你必須創建你自己的這個實現。關於我的頭頂,我會建議使用'get'方法並翻譯'Query \ Builder'的'wheres','orders'或'columns'屬性。 – 2014-09-04 00:01:34

+0

爲後人 - 我前一段時間創建了一個包,可以做OP所需要的 - 在上面的答案中鏈接。 – 2015-09-25 13:35:49