2014-09-03 8 views
1

Я создаю веб-приложение с Laravel, но я должен использовать ужасную CMS.Аксессуары и мутаторы для where clause laravel

Система CMS генерирует несколько записей в базе данных, как "info10", "info20", и т.д ...

Так себе эту таблицу "блинчики":

id | info1 | info25 

Info1 представляет цена блин и Info25 представляет собой количество.

С аксессорами и мутаторами я могу использовать $pancake->price и $pancake->quantity, чтобы установить и получить ДАННЫЕ, но как я могу выполнить запрос типа:

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 where, orderby и т. Д. Для преобразования с правильной записью. –

+0

Нет универсального метода, вам нужно будет создать свои собственные реализации этого. В верхней части моей головы я предлагаю подключиться к методу 'get' и перевести' wheres', 'orders', а может быть,' columns' свойства 'Query \ Builder'. –

+0

для потомков. Я создал пакет некоторое время назад, что позволяет делать то, что требуется OP, связанное в ответе выше. –