Ich kann den aktuellen Benutzer, der sich angemeldet hat, abrufen. Aber ich weiß nicht, wie kann ich dies in Variable übergeben. Ich kann die Benutzer-ID dadurch.Wie übergebe ich die Auth :: user() -Methode an die Variable und synchronisiere sie in Pivot-Tabelle?
Kann mir jemand sagen, wie kann ich die aktuelle Benutzer-ID synchronisieren, wenn der Absenden-Button gesendet wird. Gibt es eine Möglichkeit, wie kann ich die ID des Benutzers in der Synchronisierungsmethode anhängen?
public function postDocuments(Request $request)
{
$this->validate($request,
[
'title' => 'required|alpha_dash|max:255',
'content' => 'required',
'category_id' => 'required',
'recipient_id' => 'required',
]);
$document = new Document();
//Request in the form
$document->title = $request->title;
$document->content = $request->content;
$document->category_id = $request->category_id;
$document->save();
$document->recipients()->sync($request->recipient_id, false);
return redirect()->back();
}
UPDATE!
Laut @Ariful. Ich kann die Instanz Auth::user();
hinzufügen, um die ID zu erhalten. Aber es gibt mir die ID nicht an meine Pivot-Tabelle zurück und gibt mir einen Fehler.
SQLSTATE [23000]: Integrität Einschränkungsverletzung: 1452 nicht hinzufügen können, oder ein Kind Zeile aktualisieren: ein Fremdschlüssel fehlschlägt (.
webdev
document_user
, CONSTRAINTdocument_user_user_id_foreign
FOREIGN KEY (user_id
) LITERATURusers
(id
) ON DELETE CASCADE) (SQL: einfügen indocument_user
(document_id
,user_id
) Werte (59, 0))
public function postDocuments(Request $request)
{
$this->validate($request,
[
'title' => 'required|alpha_dash|max:255',
'content' => 'required',
'category_id' => 'required',
'recipient_id' => 'required',
]);
$user = Auth::user();
$document = new Document();
//Request in the form
$document->title = $request->title;
$document->content = $request->content;
$document->category_id = $request->category_id;
$document->save();
$document->recipients()->sync([$request->recipient_id, $user->id, false]);
return redirect()->back();
}
Models:
Benutzermodell
class User extends Model implements AuthenticatableContract
{
public function documents()
{
return $this->belongsToMany('App\Models\Document', 'document_user', 'user_id', 'document_id');
}
}
Document Model:
class Document extends Model
{
public function recipients()
{
return $this->belongsToMany('App\Models\User', 'document_user', 'document_id', 'user_id');
}
}
Migration:
Benutzermigration
public function up()
{
Schema::create('users', function (Blueprint $table) {
$table->increments('id');
$table->string('first_name');
$table->string('last_name');
$table->string('middle_name');
$table->string('email');
$table->string('username');
$table->string('address');
$table->string('password');
});
}
Dokumente Migration:
public function up()
{
Schema::create('documents', function (Blueprint $table) {
$table->increments('id');
$table->string('title');
$table->text('content');
$table->integer('category_id')->unsigned();
$table->foreign('category_id')->references('id')->on('categories')->onDelete('cascade');
$table->timestamps();
});
}
documents_user Migration:
public function up()
{
Schema::create('document_user',function (Blueprint $table)
{
$table->increments('id');
$table->integer('user_id')->unsigned();
$table->integer('document_id')->unsigned();
$table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
$table->foreign('document_id')->references('id')->on('documents')->onDelete('cascade');
$table->unsignedInteger('sender_id')->nullable();
$table->foreign('sender_id')->references('id')->on('users')->onDelete('cascade');
$table->dateTime('dateReceived')->default(DB::raw('CURRENT_TIMESTAMP'));
});
}
Screenshot Datenbank:
UPDATE 2:
ich einen Wertes auf meinem User_id basierend auf der Auswahl des Benutzers in der Auswahlliste einfügen .
Hier werden die Werte des Formulars in die Spalte user_id
eingefügt. Ich muss nur den aktuellen Benutzer in meine sender_id
einfügen, damit ich feststellen kann, wer die Daten sendet.
<div class = "form-group">
<label for = "recipient_id" class = "control-label">To:</label>
<select name = "recipient_id[]" multiple class = "form-control" id = "myUserList">
@foreach ($resultRecipient as $list)
<option value = "{{ $list->id }}">{{ $list->username }}</option>
@endforeach
</select>
</div>
Wie man hier sehen kann ich dies nur einfügen auf den Benutzer Tabellendaten manuell basiert.Habe noch keine Idee wie ich den aktuellen Benutzer in Spalte einfügen kann.
Ich kann nicht die Benutzer 'id' nach dem Einreichen der submit Ich habe versucht, in meiner' sync' Methode die '$ Anfrage-> recipient_id' hinzuzufügen. Aber es sagt 'SQLSTATE [23000]: Integritätseinschränkungsverletzung: 1452 Eine untergeordnete Zeile kann nicht hinzugefügt oder aktualisiert werden: Eine Fremdschlüsseleinschränkung schlägt fehl (' webdev'.document_user', CONSTRAINT 'document_user_user_id_foreign' FREI KEY (' user_id') REFERENCES 'Benutzer '(' id') ON DELETE CASCADE) (SQL: Einfügen in 'document_user' (' document_id', 'user_id') Werte (59, 0))' Bitte lesen Sie meinen aktualisierten Beitrag. :) – Francisunoxx
Können Sie bitte Ihren 'recipienten()' Code teilen? –
Ich habe auch meine Migrationen aufgenommen. :) – Francisunoxx