2017-10-02 4 views
1

Wie bekomme ich zufällige Werte von einer anderen Tabelle? In meinem Mitarbeiter php habe ich 3 Datensätze, also gibt es 3 ID-Werte. In meiner ticket.php sobald ich ein Ticket erstellt habe, wird es automatisch den ID-Wert von der Mitarbeiter-Tabelle bekommen, aber es ist nicht zufällig, wie mache ich das?Ist es möglich, mit ArrayHelper zufällige Werte zu erhalten? Yii2

Mine erhält derzeit den gleichen Wert von Mitarbeiter, wenn ich ein Ticket erstellen.

Im ticketcontroller.php

public function actionCreate() 
{ 
    $model = new Ticket(); 

    if ($model->load(Yii::$app->request->post()) && $model->save()) { 
     return $this->redirect(['view', 'id' => $model->id]); 
    } else { 
     $model->time_start = date('y-m-d h:i:s'); 
     $model->status = ('On Going'); 
     $model->employee_respond_id = array_rand('id'); 
     return $this->render('create', [ 
      'model' => $model, 
     ]); 
    } 
} 

Im _form.php

<?= $form->field($model, 'employee_respond_id')->dropDownlist(
           ArrayHelper::map(Employee::find()->all(), 'id', 'id'), 
           [ 
            'readOnly' => true, 
            'style' => 'width:200px' 
           ] 
); ?>   
+0

'array_rand' sollte das Array erhalten, von dem Sie einen zufälligen Wert erhalten möchten. [array_rand] (http://php.net/manual/en/function.array-rand.php) –

+0

Ja, ich habe es schon versucht $ model-> employee_respond_id = array_Rand ('id', 'id'); aber ich erhalte einen Fehler "array_rand() erwartet, dass Parameter 1 Array ist, String gegeben" Können Sie mir einen Hinweis geben, warum ist es falsch? – noobkoder

+0

erscheint "id", "id" als ein Array für Sie? –

Antwort

2

auf diese Weise versuchen:

public function actionCreate() 
{ 
    $model = new Ticket(); 

    if ($model->load(Yii::$app->request->post()) && $model->save()) { 
     return $this->redirect(['view', 'id' => $model->id]); 
    } else { 
     $employeeIDs = ArrayHelper::map(Employee::find()->all(), 'id', 'id'), 
     $model->time_start = date('y-m-d h:i:s'); 
     $model->status = ('On Going'); 
     $model->employee_respond_id = array_rand($employeeIDs); 
     return $this->render('create', [ 
      'model' => $model, 
      'employeeIDs' => $employeeIDs 
     ]); 
    } 
} 

_form.php

<?= $form->field($model, 'employee_respond_id')->dropDownlist(
    $employeeIDs, 
    [ 
     'readOnly' => true, 
     'style' => 'width:200px' 
    ] 
); ?> 

Verwenden Sie besser den Mitarbeiternamen als Bezeichnung und ID als Wert in Dropdown, noch wird es für zufällige Funktion arbeiten.

+0

Oh, ich bekomme es jetzt, also muss ich zuerst den Arrayhelper "$ employeeIDs = ArrayHelper :: map (Employee :: find() -> all(), 'id', 'id') setzen, bevor ich den array_rand-Funktion – noobkoder

Verwandte Themen