2017-10-19 122 views
0

更新多個數據我有我的數據庫中的兩個表:角色的表和角色成員的表如何存儲和Laravel

角色的表

Schema::create('roles', function (Blueprint $table) { 
     $table->increments('id'); 
     $table->string('RoleName'); 
     $table->boolean('IsAllCategory')->nullable()->default(0); 
     $table->boolean('IsUserCanLogin')->nullable()->default(1); 
     $table->timestamps(); 
    }); 

角色成員的表

Schema::create('role_memberships', function (Blueprint $table) { 
     $table->increments('id'); 
     $table->integer('role_id'); 
     $table->string('MembershipName'); 
     $table->text('MembershipValue'); 
     $table->timestamps(); 
    }); 

我在RoleName ='Admin'的角色表中有一行數據,然後我設置成員資格..每當我將角色成員資格數據存儲到數據庫中時,它將存儲爲具有相同角色ID的兩行。 這是我的角色成員

public function show($id) 
{ 
    $role = Role::findOrFail($id); 
    $postAdMaxImage = DB::table('role_memberships')->where('role_id', $role->id)->where('MembershipName' , 'PostAdMaxImage')->first(); 
    $postAdExpiredDay = DB::table('role_memberships')->where('role_id', $id)->where('MembershipName' , 'PostAdExpiredDay')->first(); 
    return view('pages/back-end/forms/role/membership')->with('role', $role) 
                 ->with('postAdMaxImage', $postAdMaxImage) 
                 ->with('postAdExpiredDay', $postAdExpiredDay); 
} 
public function update(Request $request, $id) 
{ 
    $role = Role::findOrFail($id); 
    $membership = [ 
     ['role_id' => $id, 'MembershipName' => 'PostAdMaxImage', 'MembershipValue' => $request->PostAdMaxImage ? $request->PostAdMaxImage : ''], 
     ['role_id' => $id, 'MembershipName' => 'PostAdExpiredDay', 'MembershipValue' => $request->PostAdExpiredDay ? $request->PostAdExpiredDay : ''] 
    ]; 
    DB::table('role_memberships')->insert($membership); 

    return response()->json(array($role, $membership)); 
} 

第一個問題是在顯示功能的控制器。我不能首先使用()。我想要得到的數據,將其顯示在我的觀點

<div class="form-group"> 
    <div class="col-md-6"> 
     <label>Membership</label><br> 
     <label>Maximum Gambar untuk Iklan</label> 
     <div class="row"> 
     <div class="col-md-10"> 
      <input type="text" name="PostAdMaxImage" class="form-control" value="{{$postAdMaxImage->MembershipValue}}"> 
     </div> 
     <div class="col-md-2" style="padding: 0 !important"> 
      <h5>Gambar</h5> 
     </div> 
     </div> 
    </div> 
    </div> 
    <div class="form-group"> 
    <div class="col-md-6"> 
     <label>Masa Berlaku Iklan</label> 
     <div class="row"> 
     <div class="col-md-10"> 
      <input type="text" name="PostAdExpiredDay" class="form-control" value="{{$postAdExpiredDay->MembershipValue}}> 
     </div> 
     <div class="col-md-2" style="padding: 0 !important"> 
      <h5>Hari</h5> 
     </div> 
     </div> 
    </div> 
    </div> 

第二個問題是,當我想編輯的會員。它會保存爲新的兩行,而不是更新的最後兩行

+0

的第二個問題,我**不能使用第一個()** – madalinivascu

+0

在第二個問題你的更新實際上是一個創建函數,你需要更新字段不插入新的 – madalinivascu

+0

@madalinivascu在我的show function()..我嘗試使用first()獲取單個數據..但它顯示錯誤'The Respo nse內容必須是實現__toString(),「object」給定的字符串或對象。 –

回答

1

要得到的值,用value功能

$postAdMaxImage = DB::table('role_memberships')->wh‌​ere('role_id', $role->id)->where('MembershipName' , 'PostAdMaxImage')->value('MembershipValue'); 
$postAdExpiredDay = DB::table('role_memberships')->where('role_id', $id)->where('MembershipName' , 'PostAdExpiredDay')->value('MembershipValue'); 

更改檢視:

value="{{$postAdMaxImage}}" 
    value="{{$postAdExpiredDay}}" 

在您需要更改update功能來更新你是什麼意思的領域不是創建新的

public function update(Request $request, $id) 
{ 
    $PostAdMaxImage= $request['PostAdMaxImage']; 
    $PostAdExpiredDay = $request['PostAdExpiredDay']; 
    DB::table('role_memberships')->where('role_id',$id)->where('MembershipName','PostAdMaxImage')->update(['MembershipValue'=>$PostAdMaxImage]); 
DB::table('role_memberships')->where('role_id',$id)->where('MembershipName','PostAdExpiredDay')->update(['MembershipValue'=>$PostAdExpiredDay]); 


    return response()->json(array($role, $membership)); 
}