2017-01-29 1 views
1

Ich habe eine Verwirrung und ich brauche eine Hilfe zu lösen.

Ich versuche, einen Datensatz zu einer Tabelle hinzuzufügen, die von dem ersten Datensatz abhängt, es ist eine Ereignisprotokolltabelle, die sich auf die erste Registrierung eines Anrufdatensatzes bezieht.

Wie ich versuche, dies zu tun, ist es mit einem Eingang versteckt, aber es nicht empfängt die ID und erzeugt die folgenden Fehler (nicht definierte Eigenschaft: Illuminate \ Support \ Collection :: $ id).

Dies ist Teil der Ansicht mit der Aufnahmeschaltfläche der Incidences.

@foreach ($data as $call) 
<tr class="active"> 
    <td align="center">{{ ++$i }}</td> 
    <td style="text-align: center">{{ $call->created_at->format('d - m - Y') }}</td> 
    <td>{{ $call->name }}</td> 
    <td>{{ $call->last_name }}</td> 
    <td align="center"> 
     @if($call->type == 1)   
      <span class="label label-info">Saliente</span>   
     @else   
      <span class="label label-success">Entrante</span>   
     @endif 
    </td> 
    <td>{{ $call->phone }}</td> 
    <td>{{ $call->movil }}</td> 
    <td align="center"> 

     <a class="btn btn-info btn-xs" href="{{ route('calls.show',$call->id) }}" data-toggle="tooltip" rel="tooltip" data-placement="top" title="Detalle de llamada"> <i class="material-icons">info_outline</i> </a> 

     @permission('role-edit') 
     <a class="btn btn-primary btn-xs" href="{{ route('calls.edit',$call->id) }}" data-toggle="tooltip" data-placement="top" title="Editar registro de llamada"> <i class="material-icons">create</i> </a> 
     @endpermission 

     <a class="btn btn-warning btn-xs" href="{{ route('comments.create', $call->id) }}" data-toggle="tooltip" rel="tooltip" data-placement="top" title="Registrar incidencia"> <i class="material-icons">event</i> </a> 

     {!! Form::open(['method' => 'DELETE','route' => ['calls.destroy', $call->id],'style'=>'display:inline']) !!} 

      @permission('role-delete') 
      <button type="submit" class="btn btn-danger btn-xs" data-toggle="tooltip" data-placement="top" title="Eliminar llamada"><i class="material-icons delete-white">delete</i></button> 
      @endpermission 

     {!! Form::close() !!} 
    </td> 
</tr> 
@endforeach 

Dies ist Teil der Ansicht, in der das Problem protokolliert wird, aber ich muss die ID in dem ausgeblendeten Feld übergeben.

{!! Form::open(array('route' => 'comments.store','method' => 'POST')) !!} 

    <div class="col-md-12 col-xs-12"> 
     <div class="input-group"> 
      <div class="col-md-4 col-xs-4"> 
       {!! Form::select('call_id', $calls, null, ['class' => 'form-control', 'placeholder' => 'Seleccionar cliente']) !!} <!--This is the select--> 

       {{ Form::hidden('call_id', $calls->id) }} <!--This is the hidden mode--> 
      </div> 
      <div class="col-md-8 col-xs-8"> 
       {!! Form::text('name', null, array('placeholder' => 'Registrar incidencia','class' => 'form-control')) !!} 
      </div> 
      <span class="input-group-btn">     
       <button type="submit" class="btn btn-success btn-xs" data-toggle="tooltip" rel="tooltip" data-placement="top" title="Guardar"> 
        <i class="material-icons">save</i> 
       </button> 
      </span> 
     </div> 
    </div> 

{!! Form::close() !!} 

der Fehler durch die Ansicht erzeugt wird:

Undefined property: Illuminate\Support\Collection::$id 

Diese meine Methoden für den Controller (Comment) sind.

public function create() 
    { 
     $calls = Call::orderBy('id', 'asc')->lists('name', 'id'); 

     return view('comments.create', compact('calls')); 
    } 


public function store(Request $request) 
{ 
    //return $request->all(); 

    $this->validate($request, [ 
     'name'  => 'required|unique:categories|max:255', 
    ]); 

    $comments = Comment::create([ 
     'name'   => $request->get('name'), 
     'call_id'  => $request->get('call_id'), 
    ]); 

    return redirect()->route('comments.index') 
        ->with('success','Comentario agregado correctamente!!!'); 
} 

Dies ist meine Routenmethode.

Dies ist die Anrufprotokollansicht. Wenn Sie auf die orangefarbene Schaltfläche klicken, wird die Kommentaransicht aufgerufen, um ein Problem aufzuzeichnen.

enter image description here

Dies ist die Ansicht der Aufzeichnung von Ereignissen, hier habe ich das Drop-down sondern im Idealfall statt einer Drop-Down-die ID des Datensatzes erhalten, können Sie von der vorherigen Ansicht wählen.

enter image description here

Jemand, der mich führen kann, da ich verschiedene Methoden verwendet haben, und ich habe nicht in der Lage gewesen, es zu lösen.

+1

Die lists() -Methode gibt ein Array zurück. Sie versuchen, die Eigenschaft ID aufzurufen, daher der Fehler. Sie müssen darauf verweisen als $ Anrufe ['id'] –

+0

Vielen Dank Rob Fonseca, wenden Sie Ihre Empfehlungen an, aber jetzt ist der Fehler wie folgt: Undefinierter Index: $ id (Ansicht: C: \ xampp \ htdocs \ crminmobiliario \ Ressourcen \ Ansichten \ Kommentare \ includes \ new.blade.php). –

+0

Kannst du dd() das $ -Array in deinem Controller aufrufen und es zu deinem Beitrag hinzufügen? –

Antwort

1

Löse die Verwirrung und Verfahren wie folgt dar:

Die Taste, um die Inzidenz in der Ansicht erstellen ich es wie folgt definiert:

@foreach ($data as $call) 

<a class="btn btn-warning btn-xs" href="{{ route('comments.create', ['id' => $call->id]) }}" data-toggle="tooltip" rel="tooltip" data-placement="top" title="Registrar incidencia"> <i class="material-icons">event</i> </a> 

@endforeach 

In der create-Methode der Comment ich es wie folgt aufgebaut:

public function create($id) 
{ 
    $calls = DB::table('calls')->find($id); 

    return view('comments.create', compact('calls')); 
} 

der Speicher Verfahren Comment ich es wie folgt aufgebaut:

public function store(Request $request) 
{ 
    //return $request->all(); 

    $rules = [ 
     'call_id'     => 'required', 
     'comments_name'    => 'required', 
    ]; 

    $messages = [ 
     'call_id.required'   => 'Debe seleccionar un código de llamada', 
     'comments_name.required' => 'Debe ingresar incidencia', 
    ]; 

    $this->validate($request, $rules, $messages);  

    $comments = Comment::create([ 
     'comments_name'  => $request->get('comments_name'), 
     'call_id'   => $request->get('call_id'), 
    ]); 

    return redirect()->route('calls.index') 
        ->with('success','Incidencia agregada correctamente!!!'); 
} 

Die Etiketten in der Ansicht erstellen Vorfälle sind wie folgt:

{!! Form::open(array('route' => 'comments.store','method' => 'POST')) !!} 

    <div class="col-md-12 col-xs-12"> 
     <div class="input-group"> 
      <div class="col-md-12 col-xs-12"> 
      {!! Form::text('comments_name', null, array('placeholder' => 'Nombres','class' => 'form-control')) !!} 
      {{ Form::hidden('call_id', $calls->id) }} 
      </div> 
      <span class="input-group-btn"> 
       <a class="btn btn-warning btn-xs" href="{{ route('calls.index') }}" data-toggle="tooltip" rel="tooltip" data-placement="top" title="Retornar"> 
        <i class="material-icons">arrow_back</i> 
       </a> 

       <button type="submit" class="btn btn-success btn-xs" data-toggle="tooltip" rel="tooltip" data-placement="top" title="Guardar"> 
        <i class="material-icons">save</i> 
       </button> 
      </span> 
     </div> 
    </div> 

{!! Form::close() !!} 

Und ich definiert die folgende Route in der Routen-Datei:

Route::get('comments/create/{id}', [ 
    'middleware' => 'auth', 
    'as' => 'comments.create', 
    'uses' => '[email protected]' 
]); 

diese Weise können Sie eine Anrufliste erstellen mit eine Liste mit vielen Vorfällen.

Wenn diese Methode verbessert werden soll, bitte geben Sie mir die Empfehlungen, aber es war die Art und Weise, wie ich es tun könnte.

Dank @RobFonseca und @CarlosAdames für Ihre Kommentare und Hilfe.

1

Die Methode lists gibt eine Sammlungsinstanz zurück. Sie müssen die Sammlung mithilfe der all-Methode in ein einfaches Array konvertieren.

In Ihrem Controller versuchen Sie dies:

$ Anrufe = Anruf :: orderBy ('id', 'asc') -> Listen ('name', 'id') -> alle();

Sie können in den folgenden Link, um mehr darüber lesen The lists Method

Lassen Sie mich wissen, wenn Ihr Problem gelöst ist.

+0

Hallo @CarlosAdames, ich war die Überprüfung und Anwendung dieser Parameter: im Laden Methode in CommentsController Calls $ = Aufruf :: orderBy ('id', 'asc') -> Listen ('name', 'id'); In der Ansicht fügen Sie einfach diese Felder hinzu: {!! Form :: open (Array ('route' => 'comments.store', 'Methode' => 'POST')) !!} {!! Form :: text ('Kommentarname', null, Array ('Platzhalter' => 'Namen', 'Klasse' => 'Formularsteuerung')) {!! Form :: close() !!} –

+0

Aber wenn ich die Änderungen speichere, erhalte ich diesen Fehler: SQLSTATE [23000]: Integritätseinschränkungsverletzung: 1452 Hinzufügen oder Aktualisieren einer untergeordneten Zeile: eine Fremdschlüsseleinschränkung schlägt fehl ('erpinmobiliaria'.' comments', CONSTRAINT 'comments_call_id_foreign' FOREIGN KEY (' call_id') REFERENZEN 'calls' (' id') ON DELETE CASCADE ON UPDATE CASCADE) (SQL: Einfügen in 'Kommentare' (' comments_name', 'call_id',' updated_at' , 'created_at') Werte (Prueba de incidencia con campo oculto 1., $ Anruf-> id, 2017-02-04 01:18:50, 2017-02-04 01:18:50)) –

Verwandte Themen