2014-11-01 54 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