Фильтрация по id и по field

ЕСТЬ РЕШЕНИЕ ЗАКРЫТО InstantCMS 2.X
#1 17 апреля 2018 в 18:35
Друзья как эти строчки сделать в одну строку? Что бы при вводе строку по ид искало b и по уникальному названию ?
  1. $sport_team = $this->getItemById('sports_teams', $id);
  2. $sport_team = $this->getItemByField('sports_teams', 'team_system', $id);
Например если пользователь ввел в строку test/1 или test/blabla обе работали.
#2 17 апреля 2018 в 19:07
scratchнепонятно
#3 17 апреля 2018 в 19:38


scratchнепонятно

Alex

Что бы и по id находило и по записи
#4 17 апреля 2018 в 20:02
Думаю надо поставить условие if(!empty($team_system)){ ищем по $team_system; }else{ ищем по $id; }
Только надо как-то различать что есть 'id' а что есть 'team_system'. Например 'id' — это число, 'team_system' — это строка
#5 17 апреля 2018 в 20:15


Думаю надо поставить условие if(!empty($team_system)){ ищем по $team_system; }else{ ищем по $id; }
Только надо как-то различать что есть 'id' а что есть 'team_system'. Например 'id' — это число, 'team_system' — это строка

Alex

А как это можно сделать в model.php

  1. public function getSportsTeam($id){
  2. $sport_team = $this->getItemByField('sports_teams', 'team_system', $id);
  3. $this->filterEqual('team_system', $id);
  4. $sport_team['sports_teams'] = $this->get('sports_teams');
  5. return $sport_team;
  6. }
#6 17 апреля 2018 в 20:32
Ну примерно
  1.  
  2. public function getSportsTeam($value){
  3. if (is_numeric($value)) {
  4. // передано число, значит ищем по 'id'
  5. $sport_team = $this->getItemById('sports_teams', $value);
  6. }
  7. else {
  8. // передано не число, значит ищем по 'sports_teams' - строка
  9. $this->filterLike('team_system', $value);
  10. $sport_team = $this->getItem('sports_teams');
  11. }
  12. return $sport_team;
  13. }
  14.  
#7 17 апреля 2018 в 20:56


Ну примерно

  1.  
  2. public function getSportsTeam($value){
  3. if (is_numeric($value)) {
  4. // передано число, значит ищем по 'id'
  5. $sport_team = $this->getItemById('sports_teams', $value);
  6. }
  7. else {
  8. // передано не число, значит ищем по 'sports_teams' - строка
  9. $this->filterLike('team_system', $value);
  10. $sport_team = $this->getItem('sports_teams');
  11. }
  12. return $sport_team;
  13. }
  14.  

Alex

Спасибо прям в точку!

  1. if (is_numeric($id)) {
  2. $sport_team = $this->getItemById('sports_teams', $id);
  3. } else {
  4. $this->filterLike('team_system', $id);
  5. $sport_team = $this->getItem('sports_teams');
  6. }
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.