CdssXyDisease.php 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. <?php
  2. namespace app\model;
  3. use think\Model;
  4. class CdssXyDisease extends Model
  5. {
  6. protected $table = "jm_cdss_xy_disease";
  7. /**
  8. * 搜索器 disease(name)
  9. */
  10. public function searchNameAttr($query , $value , $data)
  11. {
  12. $query->where('name' , 'like' , '%'.$value.'%');
  13. }
  14. /**
  15. * 获取名称别名
  16. */
  17. public function getNameAndAlias($value)
  18. {
  19. $diseaseName = CdssXyDisease::field('name as disease_name, alias')->where('name' , $value)->find();
  20. if($diseaseName) {
  21. if($diseaseName->alias) {
  22. return $this->dealAlias($diseaseName->disease_name , $diseaseName->alias);
  23. } else {
  24. return [];
  25. }
  26. } else {
  27. $disease = CdssXyDisease::field('name as disease_name , alias')->where('alias' , 'like' , "%$value%")->find();
  28. if(empty($disease)) {
  29. return [];
  30. }
  31. $aliasArr = $disease->getAliasArr($disease->alias);
  32. if(is_array($aliasArr)) {
  33. if(in_array($value, $aliasArr)) {
  34. return $this->dealAlias($disease->disease_name , $disease->alias);
  35. }
  36. } else {
  37. if($value == $aliasArr) {
  38. return $this->dealAlias($disease->disease_name , $disease->alias);
  39. }
  40. }
  41. return [];
  42. }
  43. }
  44. protected function getAliasArr($alias)
  45. {
  46. if(stripos($alias , ';') !== false ) {
  47. return explode(';' , $alias);
  48. }
  49. if(stripos($alias , ';') !== false ) {
  50. return explode(';' , $alias);
  51. }
  52. return $alias;
  53. }
  54. protected function dealAlias($name , $alias)
  55. {
  56. if(stripos($alias , ';') !== false) {
  57. $newArray[] = $name;
  58. $aliasArr = explode(';' , $alias);
  59. $newArray = array_merge($newArray, $aliasArr);
  60. } elseif(stripos($alias , ';') !== false) {
  61. $newArray[] = $name;
  62. $aliasArr = explode(';' , $alias);
  63. $newArray = array_merge($newArray, $aliasArr);
  64. } else {
  65. $newArray[] = $name;
  66. $newArray[] = $alias;
  67. }
  68. return array_values(array_filter($newArray));
  69. }
  70. }