2017-10-19 123 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)); 
}