Ich versuche, mein Modell über PUT HTTP-Anfrage in Yii2 Framework zu aktualisieren. Alles funktioniert gut, wenn ich einen einzelnen Primärschlüssel in meinem Modell habe.Yii2 REST API Update (Put), wenn Composite Key
Probleme sind, wenn ich Composite-Primärschlüssel in Tabelle haben.
Wie wird aktualisiert?
I einreichen JSON:
{"date_execution":"2017-08-26","order_id":"59", "company_id":13,"your_price":100,"car_id":"8","note":"lorem ipsum"}
meine zusammengesetzten Primärschlüssel enthalten: - order_id - company_id
ich folgende Anträge versucht:
PUT SERVER/Angebot/100 - wo 100 ist company_id
PUT SERVER/Angebot/2000 - wo 2000 ORDER_ID ist
diese 2-Anfragen Problem zurückkommen:
{"name":"Not Found","message":"Object not found: 13","code":0,"status":404,"type":"yii\\web\\NotFoundHttpException"}
Ich habe auch versucht
PUT SERVER/Angebot/2000/100 - wobei 2000 order_id und 100 ist company_id
PUT SERVER/Angebot/100/200 0
denen 2 Return-Controller/Aktion nicht gefunden Ausnahme
Auch habe ich order_id und company_id zu JSON, aber nichts funktioniert.
Controller-Klasse:
use yii\rest\ActiveController;
class OfferController extends ActiveController
{
// adjust the model class to match your model
public $modelClass = 'app\models\Offer';
public function behaviors(){
$behaviors = parent::behaviors();
// remove authentication filter
$auth = $behaviors['authenticator'];
unset($behaviors['authenticator']);
// add CORS filter
$behaviors['corsFilter'] = [
'class' => CustomCors::className()
];
// re-add authentication filter
$behaviors['authenticator'] = [
'class' => CompositeAuth::className(),
'authMethods' => [
HttpBearerAuth::className(),
],
];
// avoid authentication on CORS-pre-flight requests (HTTP OPTIONS method)
$behaviors['authenticator']['except'] = ['options'];
return $behaviors;
}
}
würde ich glaube, Sie haben eine benutzerdefinierte Aktion zu erstellen, weil Update nur $ id Parameter nimmt: https://github.com/yiisoft/yii2/blob/master /framework/rest/UpdateAction.php –