Я могу получить текущего пользователя, который вошел в систему. Но я не знаю, как передать это в переменную. Я могу использовать идентификатор пользователя.Как передать переменной метод Auth :: user() и синхронизировать ее в сводную таблицу?
public function getDocuments()
{
//GETTING ALL THE ID OF THE USERS IN THE DATABASE EXCEPT THE ID OF CURRENT USER.
$resultRecipient = DB::table('users')->where('id', '!=', Auth::id())->get();
//GETTING ALL THE CATEGORIES.
$resultCategory = DB::table('categories')->get();
//VIEW
return view ('document.create')->with('resultRecipient', $resultRecipient)->with('resultCategory', $resultCategory);
if(\Auth::user()->id)
{
echo "You get the id";
}
else
{
echo "Failed";
}
}
Может ли кто-нибудь сказать мне, как я могу синхронизировать текущий идентификатор пользователя при отправке кнопки отправки. Есть ли способ, каким образом я могу присоединить идентификатор пользователя в методе синхронизации?
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();
}
ОБНОВЛЕНИЕ!
Согласно @Ariful. Я могу добавить экземпляр Auth::user();
, чтобы получить идентификатор. Но он не возвращает мне идентификатор моей сводной таблицы и дает мне ошибку.
SQLSTATE [23000]: Integrity нарушение ограничения: 1452 Невозможно добавить или обновить дочернюю строку: ограничение внешнего ключа не удается (.
webdev
document_user
, скованностьdocument_user_user_id_foreign
FOREIGN KEY (user_id
) Литusers
(id
) ON DELETE CASCADE) (SQL: вставить вdocument_user
(document_id
,user_id
) значения (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();
}
модели:
пользователя Модель
class User extends Model implements AuthenticatableContract
{
public function documents()
{
return $this->belongsToMany('App\Models\Document', 'document_user', 'user_id', 'document_id');
}
}
Модель документа:
class Document extends Model
{
public function recipients()
{
return $this->belongsToMany('App\Models\User', 'document_user', 'document_id', 'user_id');
}
}
миграции:
миграции пользователя
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');
});
}
Документы миграции:
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 миграция:
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'));
});
}
Database Скриншот:
UPDATE 2:
Я могу вставить значения на моем user_id на основе выбора пользователя в списке выбора ,
Здесь значения формы вставлены в столбец user_id
. Мне просто нужно вставить текущего пользователя в мой sender_id
, поэтому я могу определить, кто отправляет данные.
<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>
Как вы можете видеть здесь, я просто вставить вручную на основе пользователей таблица данных.Все еще не знаю, как я могу вставить текущего пользователя в столбец sender_id
.
Я не могу получить пользователя 'id' после попадания в submit, который я попытался добавить в свой метод' sync' '$ request-> recipient_id'. Но это говорит 'SQLSTATE [23000]: Нарушение ограничения целостности: 1452 Невозможно добавить или обновить дочернюю строку: ограничение внешнего ключа завершается с ошибкой (' webdev'.'document_user', CONSTRAINT 'document_user_user_id_foreign' FOREIGN KEY (' user_id') Пользователи ССЫЛКИ '(' id') ON DELETE CASCADE) (SQL: вставить в 'document_user' (' document_id', 'user_id') значения (59, 0))' См. мое обновленное сообщение. :) – Francisunoxx
Можете ли вы поделиться своим кодом «recipients()»? –
Я также включил свои миграции. :) – Francisunoxx