[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: вызов where() в kohana
Krevedko
есть фреймворк кохана.
есть query_builder
есть метод в модели:


public function getClip($category)
{
$query_result = DB::select('clips.id', 'artist', 'clips.name', 'date', 'pic_url', 'width_mini', 'height_mini', array('name_rus', 'category'), array('category.name', 'cat_name'), 'views', 'comments')
->
from('clips')
->
join('category')
->
on('clips.category_id', '=', 'category.id')
->
order_by('clips.id','DESC')
->
limit('5')
->
where('category.name', '=', $category)
->
execute()
->
as_array();

return $query_result;
}


как сделать, чтобы метод where не вызывался, когда передается пустая $category и вызывался, когда передается не пустая.



Спустя 14 минут, 51 секунда (20.08.2011 - 00:16) Renden написал(а):
Хыхы, для чайников так для чайников %)))

public function getClip($category)
{
if(!empty($category))
$query_result = DB::select('clips.id', 'artist', 'clips.name', 'date', 'pic_url', 'width_mini', 'height_mini', array('name_rus', 'category'), array('category.name', 'cat_name'), 'views', 'comments')
->
from('clips')
->
join('category')
->
on('clips.category_id', '=', 'category.id')
->
order_by('clips.id','DESC')
->
limit('5')
->
where('category.name', '=', $category)
->
execute()
->
as_array();
else
$query_result = DB::select('clips.id', 'artist', 'clips.name', 'date', 'pic_url', 'width_mini', 'height_mini', array('name_rus', 'category'), array('category.name', 'cat_name'), 'views', 'comments')
->
from('clips')
->
join('category')
->
on('clips.category_id', '=', 'category.id')
->
order_by('clips.id','DESC')
->
limit('5')
->
execute()
->
as_array();
return $query_result;
}


А насамом деле интересно как :)

Спустя 2 минуты, 22 секунды (20.08.2011 - 00:19) Krevedko написал(а):
гениально ! вот пока ходил, делал себе кофеек, думал еще , что зря не написал , чтобы этот вариант не предлагали biggrin.gif

Спустя 4 минуты, 52 секунды (20.08.2011 - 00:24) Renden написал(а):
Krevedko
Хахаха, %)) А нельзя при обращении к методам условия ставить? Я просто никогда не пробывал.

->if(!empty($category)) where('category.name', '=', $category)

Да вообще че ты заморачиваешься то?)

Спустя 9 минут, 21 секунда (20.08.2011 - 00:33) inpost написал(а):

 ! 

М
Предупреждение: давай осмысленные заголовки своим темам
inpost

Спустя 11 минут, 52 секунды (20.08.2011 - 00:45) Renden написал(а):
inpost
Офтоп:
Свернутый текст
Цитата
Давайте вменяемые названия вашим темам.
За названия тем: Помагите 3 сутки не сплю!! и им подобные буду раздавать баны, а сами темы закрывать.

Он в прикол, че ты smile.gif

Спустя 1 минута, 50 секунд (20.08.2011 - 00:47) Krevedko написал(а):
Цитата (Renden @ 19.08.2011 - 21:24)
Krevedko
Хахаха, %)) А нельзя при обращении к методам условия ставить? Я просто никогда не пробывал.

->if(!empty($category)) where('category.name', '=', $category)

Да вообще че ты заморачиваешься то?)

нельзя.

а ты не заморчаиваешься ? или ты при подготовке sql запроса в похожей ситуации напишешь два почти одинаковых запроса ?
или по умному...что-то типа

if($category)
$where = 'WHERE `category.name`= ' . $category)';
else
$where = '';

...
$sql = 'SELECT * FROM `clips` ' . $where;
$result = mysql_query($sql);

не ? ты два запроса влепишь ?

я изначально не хочу говнокодить. но меня бесит, когда я на такую туфту трачу по 6 часов.


Спустя 2 минуты, 32 секунды (20.08.2011 - 00:49) Renden написал(а):
Krevedko
Я сделаю почти так как ты написал, да , я тя понимаю, сам иногда заморачиваюсь чтоб было все красиво и тп..., но помоему других вариантов тут нет..

Зы в последнее время я просто начал помечать те участки кода над которыми надо подумать вплане оформления\оптимизации, но пишу так чтоб работало, оптимизирую уже потом, иначе с мысли сбиваешься той что ты хотел сделать и кучу времени тратишь на фигню..

Спустя 9 минут, 5 секунд (20.08.2011 - 00:58) Krevedko написал(а):
та сделал уже два запроса, пошел дальше. может Семен вернется-подскажет.

Спустя 30 минут, 2 секунды (20.08.2011 - 01:28) Invis1ble написал(а):
Krevedko
Не работал с коханой, да и вообще с фреймворками толком не работал. По логике по идее так можно:
public function getClip($category)
{
$obj = DB::select('clips.id', 'artist', 'clips.name', 'date', 'pic_url', 'width_mini', 'height_mini', array('name_rus', 'category'), array('category.name', 'cat_name'), 'views', 'comments')
->
from('clips')
->
join('category')
->
on('clips.category_id', '=', 'category.id')
->
order_by('clips.id','DESC')
->
limit('5');

if (!empty($catagory))
$obj = $obj->where('category.name', '=', $category);

$query_result = $obj->execute()->as_array();

return $query_result;
}

Если не работает, то поищи в документации, по идее должен быть какой-нить метод типа addWhere(), по крайней мере я баловался с symfony - там вроде был такой.

PS. Я конечно все понимаю, старожил и все такое, но название темы все-таки нужно сменить
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.