2016-12-03 58 views
1

我正在嘗試爲iOS應用程序設置我的API。這是我第一次使用Laravel的API,因此這裏是我在我的表:通過外鍵保存/檢索數據(API)

汽車

Schema::create('cars', function (Blueprint $table) { 
     $table->increments('id'); 

     $table->string('name')->nullable(); 
     $table->string('age')->nullable(); 
     $table->string('model')->nullable(); 
     $table->string('color')->nullable(); 

用戶

 $table->increments('id'); 
     $table->string('name')->nullable(); 
     $table->string('street')->nullable(); 
     $table->string('niehgborhood')->nullable(); 
     $table->string('city')->nullable(); 

合同

$table->increments('id'); 

     $table->integer('user_id')->unsigned; 
     $table->foreign('user_id')->references('id')->on('users'); 

     $table->integer('car_id')->unsigned; 
     $table->foreign('car_id')->references('id')->on('cars'); 

模式

protected $table = 'users'; 

protected $guarded = ['id']; 
protected $fillable = ['phone', 'email', 
    'street','city','niehgborhood' 
    ,'national_id']; 

public function cars() 
{ 
    return $this->hasMany('App\User'); 
} 

用戶

protected $guarded = ['id']; 

protected $fillable = ['name', 'age', 
    'color, model' 
    ]; 


public function users() 
{ 
    return $this->belongsToMany('App\Cars'); 
} 

在我的控制,我熟悉保存請求數據

$user = JWTAuth::parseToken()->authenticate(); 

    $user->phone = $request->phone; 
    $user->city = $request->city; 

    $user->save(); 

我這個項目的目標是要顯示的數據(合同)由我的儀表板中的iOS應用用戶保存。例如,用戶信息和他們對我的表感興趣的汽車。有人可以幫我做什麼在控制器查詢(而不是視圖)。或者爲這樣的項目提供有用的鏈接。

回答

2

您與UserCars之間的關係應爲many-to-many。請閱讀文檔以正確應用此關係。

如果你的關係都在地方,那麼你可以做:

$user = JWTAuth::parseToken()->authenticate(); 

$cars = $user->cars; // returns collection of cars associated with the user. 

例如 - 在你User模型中定義了以下關係:

public function cars() 
{ 
    return $this->belongsToMany('App\Car'); 
} 

更新

爲了節省用戶和準車,你可以這樣做:

$user = JWTAuth::parseToken()->authenticate(); 

$user->phone = $request->phone; 
$user->city = $request->city; 

$user->save(); 

$car_ids = $request->car_ids; // it should return an array 

$user->cars()->sync($car_ids); 

還有更多的方法來存儲數據。請閱讀文檔here瞭解更多信息。

+0

所以這將返回與用戶關聯的汽車。現在在回答之前,我怎樣才能鏈接它們?如何通過http調用將汽車ID鏈接到用戶ID? @iCode – leo0019

+0

檢查更新的答案。用於鏈接數據讀取[這裏](https://laravel.com/docs/5.3/eloquent-relationships#updating-many-to-many-relationships)。我沒有得到你的問題「我怎麼能通過http調用將汽車id鏈接到用戶id?」 –

+0

謝謝你的例子!我的意思是,在iOS應用中,我會將用戶數據(姓名,電話......)發送到Laravel的「商店」功能。汽車數據也會發生同樣的情況。但正如我所說,我想要顯示用戶信息和他們感興趣的汽車。怎麼做?在應用程序中,我有一個表格,用戶將填寫他們的信息和他們感興趣的汽車(下拉列表)@iCode – leo0019