2017-02-10 9 views
-1

В приведенном ниже коде я перечисляю фермы с помощью api для отдыха, и он получает данные, но модель профиля фермы связана с пользовательской моделью в этом fpro_userid. Я хочу, чтобы имя пользователя из таблицы пользователя создало дополнительные поля функции, возвратив fproUser в модель farmprofile. Я получаю детали пользователя без вызова функции actionNearbyfarms(), но если вы вызываете эту функцию, я не получаю детали пользователя.Я не получаю детали из таблицы пользователя

Может ли кто-нибудь помочь?

public function actionNearbyfarms() 
{ 
    $practice = Yii::$app->request->getQueryParam('practice'); 
    $practicelist = ""; 
    if ($practice != null && $practice != "") { 
     $practicelist = FarmProfile::find()->where('fpro_practice_type='.$practice)->all();   

    } 

    $user_lat = Yii::$app->request->get('ip_lat')?Yii::$app->request->get('ip_lat'):'13.0973700000'; 
    $user_lan = Yii::$app->request->get('ip_lan')?Yii::$app->request->get('ip_lan'):'77.3952590000'; 

    $nearbylocations = array(); 
    $nearbyfarms = array(); 

    $connection = Yii::$app->getDb(); 

     $command = $connection->createCommand(' 
      SELECT fpro_userid, 6371 * 2 * ASIN(SQRT(POWER(SIN(('.$user_lat.' - abs(fpro_lat)) * pi()/180/2),2) + COS('.$user_lan.' * pi()/180) * COS(abs(fpro_lan) * pi()/180) * POWER(SIN(('.$user_lan.' - fpro_lan) * pi()/180/2), 2))) as distance FROM farm_profile having distance < 30 ORDER BY distance 
      '); 

    $result = $command->queryAll(); 

    if($practice != null && $practice != ""){ 
     return $model = FarmProfile::find()->where(['fpro_userid' => $result])->andwhere(['fpro_practice_type' => $practicelist])->with('fproUser')->all(); 
    } else { 
     return $model = FarmProfile::find()->where(['fpro_userid' => $result])->with('fproUser')->all(); 
    } 
} 

ответ

0

$result = $command->queryAll();

В вашем $ reuslt вы получите все строки, так что вам нужно только столбец fpro_userid из первых (или уникальных строк), вы должны accessi

$myActValue = $resuly[0]['fpro_userid']; 

, а затем

return $model = FarmProfile::find()-> 
      where(['fpro_userid' => $myActValue])-> 
      andwhere(['fpro_practice_type' => $practicelist])->with('fproUser')->all(); 

или вы вместо запроса. Вы должны использовать queryScalar, которые возвращают первый столбец из ряда из вас. Выберите команду

$result = $command->queryScalar();