2017-10-19 5 views
0

J'ai deux tables dans ma base de données: table de rôle et le rôle de la table de l'adhésionComment stocker et mettre à jour des données multiples dans Laravel

Table de rôle

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(); 
    }); 

rôle de la table de membres

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

I avoir une ligne de données dans la table de mon rôle avec RoleName = 'Admin', puis je définis l'appartenance .. chaque fois que je stocke les données d'appartenance au rôle dans la base de données, il va stocker comme deux lignes avec le même rôle_id .. Ceci est mon contrôleur appartenance à un rôle

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)); 
} 

Le premier problème est en fonction show .. Je ne peux pas utiliser d'abord() .. Je veux obtenir les données pour le montrer dans mon avis

<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> 

le deuxième problème est, quand je veux modifier les membres .. Il stockera que deux nouvelles lignes, pas à jour les deux dernières lignes

+0

ce que vous entendez par ** I ne peut pas utiliser d'abord() ** – madalinivascu

+0

dans le deuxième problème votre mise à jour est en fait une fonction de création, vous devez mettre à jour le champ pas insérer de nouveaux – madalinivascu

+0

@madalinivascu dans ma fonction show() .. J'essaie d'utiliser first() pour obtenir des données uniques .. mais il montre une erreur 'The Respo le contenu nse doit être une chaîne ou un objet implémentant __toString(), "object" donné. –

Répondre

1

pour obtenir les valeurs utilisent la fonction 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'); 

changer votre vue:

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

Dans la deuxième question que vous devez modifier votre fonction update de mettre à jour les champs créent pas de nouveaux

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)); 
}