2014-11-01 165 views
0
bookmaker table 
id 
name 


bookmaker_user table 
id 
account_name 
bookmaker_id 
user_id 


user table 
id 
name 

User Model : 
public function bookmakers(){ 
    return $this->belongsToMany('Bookmaker', 'bookmaker_user', 'user_id', 'bookmaker_id') 
      ->withPivot('id', 'accountname')->withTimestamps(); 
} 


BookmakerController.php 
public function update($id) 
{ 
      $bookname = Input::get('booknamemodifselect'); 
      $accountname = Input::get('accountnamemodifinput'); 
      $bankrollinvested = Input::get('bankrollinvestedmodifinput'); 
      $bonus = Input::get('bonusmodifinput'); 
      $bankrollamount = Input::get('bankrollamountmodifinput'); 

      $bookmodif = DB::table('bookmakers')->where('name', $bookname)->first(); 


      $bookmaker = $this->user->bookmakers()->where('bookmaker_user.id','=',$id)->first(); 
      $bookmaker->pivot->bookmaker_id = $bookmodif->id; 
      $bookmaker->pivot->save(); 
    } 

$ id是帳戶更新透視表

$這 - 的id>用戶鑑別的用戶。

我想通過他的id(通過帳戶ID我的意思是)屬於用戶身份驗證更新帳戶的博彩公司。因爲用戶身份驗證具有多個具有相同博彩公司但具有不同帳戶名稱的條目。 它說'嘗試獲取非對象的屬性'。

+0

在這行你到底得到「試圖獲得非對象的屬性」的錯誤? – lukasgeiter 2014-11-01 18:32:50

+0

$ bookmaker-> pivot-> bookmaker_id = $ bookmodif-> id; – edofthadead 2014-11-01 18:36:34

+0

你能檢查它是否真的找到了博彩公司嗎?我想'$ bookmodif'是空的? – lukasgeiter 2014-11-01 19:11:50

回答

3

總結下面的問題的評論,這不是一個非常常見的數據庫設計。這也意味着,改變這可能是一個好主意。通過將bookmaker_user數據透視錶轉換爲具有其自己的模型類的完整增長表。對於原因是:屬於同一用戶和收受

  • 多個記錄(許多一對多應該只有一個)存儲在數據透視表
  • 附加數據(而通常沒關係,把它添加到第一點)的變化
  • 更容易處理(例如改變賬號的博彩公司)

但是,這並不是真正的問題,提出所以這裏的問題是在於:

我在本地嘗試了它,但沒有收到任何錯誤,但我不保存到數據庫。
這似乎是某種錯誤或意外的行爲。但是,解決方法是使用查詢生成器。
在我看來它更加優雅這種情況...

$bookmodif = DB::table('bookmakers')->where('name', $bookname)->first(); 

if($bookmodif !== null){ // just to make sure the bookmaker exists 
    DB::table('bookmaker_user') 
     ->where('id', $id) 
     ->update(array('bookmaker_id' => $bookmodif->id); 
} 
+0

它的作品感謝您的答案!我不能投票我沒有15聲望,請有人投票了! – edofthadead 2014-11-01 22:12:26

+0

您可以通過點擊下面的選票號碼來接受答案:) – lukasgeiter 2014-11-01 22:23:29

+0

haha​​h ok thx !!! – edofthadead 2014-11-01 22:29:07