Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Как можно вызывать метод в зависимости от параметра
Форумы портала PHP.SU » » Объектно-ориентированное программирование » Как можно вызывать метод в зависимости от параметра

Страниц (1): [1]
 

1. Nesquik - 21 Июня, 2016 - 18:24:14 - перейти к сообщению
CODE (htmlphp):
скопировать код в буфер обмена
  1.     public static function getWithAdmin($relation = null, $relation2 = null, $pagination = false, $sort = 'desc', $sort_field = 'id') {
  2.  
  3.         if($pagination) {
  4.  
  5.             return self::with($relation, $relation2)
  6.                 ->orderBy($sort_field, $sort)
  7.                 ->paginate($pagination);
  8.  
  9.         }
  10.  
  11.         return self::with($relation, $relation2)
  12.             ->orderBy($sort_field, $sort)
  13.             ->get();
  14.  
  15.  
  16.     }


Иммется примерно такая модель, как можно избавиться от блока с if ? Желательно даже сделать так, чтобы можно было, в зависимости от параметра вызывать еще один метод и еще.. и еще... хоть сколько много , если будут передаваться параметры
2. Viper - 21 Июня, 2016 - 19:24:52 - перейти к сообщению
Nesquik пишет:
Желательно даже сделать так, чтобы можно было, в зависимости от параметра вызывать еще один метод и еще.. и еще... хоть сколько много , если будут передаваться параметры
не совсем понятно от какого параметра вы собрались танцевать. Если вам нужно вызвать цепочку то передавайте массив и в нем зовите толпу. Хотя это говнокод ИМХО.
3. Nesquik - 21 Июня, 2016 - 21:26:33 - перейти к сообщению
Ну смысл в том чтобы избежать повторения кода текущего примера. Вроде простая задача, но никак не могу догнать Хм
4. Viper - 21 Июня, 2016 - 21:36:28 - перейти к сообщению
Nesquik пишет:
Ну смысл в том чтобы избежать повторения кода текущего примера.
для этого придумали переменные. Присвойте значение и всех делов-то.

PHP:
скопировать код в буфер обмена
  1. public static function getWithAdmin($relation = null, $relation2 = null, $pagination = false, $sort = 'desc', $sort_field = 'id') {
  2.         $result = self::with($relation, $relation2)
  3.                 ->orderBy($sort_field, $sort);
  4.  
  5.                 if ($pagination)
  6.                 {
  7.                         $result->paginate($pagination);
  8.                 }
  9.                 else
  10.                 {
  11.                         $result->get();
  12.                 }
  13.  
  14.         return $result;
  15. }
5. Nesquik - 21 Июня, 2016 - 23:28:21 - перейти к сообщению
А если у нас помимо зависимости с $pagination есть еще $where ( ->where('bla-bla' => 'ololo') ) и они могут быть в разных сочетаниях, с пагинацией но без веэ, с веэ но без пагинации, ни одно из них и все. В таком случае через switch case ?
6. Viper - 21 Июня, 2016 - 23:47:30 - перейти к сообщению
Nesquik пишет:
они могут быть в разных сочетаниях, с пагинацией но без веэ, с веэ но без пагинации, ни одно из них и все
да ладно?
Ваша пагинация не более чем LIMIT. Почитайте базовую информацию про запросы и узнаете почему ваши вопросы как минимум не уместны в данном случае.

Я боюсь вам без базовых знаний дальше не имеет смысла пользоваться построителями запросов. К тому же в некоторых случаях их использование не оправдывается более чем полностью.
7. Nesquik - 22 Июня, 2016 - 09:56:13 - перейти к сообщению
Видимо предыдущий вопрос был не совсем понят. Буду рад если напишет еще кто Улыбка

Надо что-то типа такого

CODE (htmlphp):
скопировать код в буфер обмена
  1.         $result = self::with($relation, $relation2)
  2.             ->orderBy($sort_field, $sort);
  3.  
  4.         if ($pagination) {
  5.             $deleted == null ? $result->paginate($pagination) : $result->where('date_deleted', '!=', null)->paginate($pagination);
  6.         }
  7.         else {
  8.             $deleted == null ? $result->get() : $result->where('date_deleted', '!=', null)->get();
  9.         }
  10.  
  11.         return $result;


Желательно те, кто работает с ларавелом.

Вернее даже так примерно:

CODE (htmlphp):
скопировать код в буфер обмена
  1. SomeModel::getWith($params)->whereDeleted()->paginateIt(20);


Получилось как-то так..

PHP:
скопировать код в буфер обмена
  1.     public static function getWithAdmin($relation = null,
  2.                                         $relation2 = null,
  3.                                         $pagination = false,
  4.                                         $sort = 'desc',
  5.                                         $sort_field = 'id',
  6.                                         $deleted = null,
  7.                                         $whereID = null) {
  8.  
  9.         $result = self::with($relation, $relation2)
  10.             ->orderBy($sort_field, $sort);
  11.  
  12.         if($deleted) {
  13.  
  14.             $result = $result->where('date_deleted', '!=', null);
  15.  
  16.         }
  17.         else {
  18.  
  19.             $result = $result->where('date_deleted', '=', null);
  20.  
  21.         }
  22.  
  23.         if($whereID) {
  24.  
  25.             $result = $result->where('seller_id', $whereID);
  26.  
  27.         }
  28.  
  29.         if($pagination) {
  30.  
  31.             $result = $result->paginate($pagination);
  32.  
  33.         }
  34.  
  35.         else {
  36.             $result = $result->get();
  37.         }
  38.  
  39.         return $result;
  40.  
  41.     }

 

Powered by ExBB FM 1.0 RC1