【发布时间】:2016-08-01 01:20:45
【问题描述】:
我仍在思考是否有办法创建自定义数据透视表名称?因为我创建了一个 documents 和 users 表与 document_user 这是我的 pivot table 和该表是为用户创建的已接收文档创建的。我计划为 document 和 user 创建另一个数据透视表,此表用于发送的文档,以便我可以了解历史记录。请参阅下面的代码。
create_document_user_table
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'));
$table->timestamp('dateModified')->default(DB::raw('CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP'));
});
}
documents_table
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();
});
}
users_table
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');
$table->string('remember_token');
$table->integer('role_permission_id')->unsigned();
$table->foreign('role_permission_id')->references('id')->on('roles_permissions_dt')->onDelete('cascade');
$table->timestamps();
});
}
这很好地将记录插入我的数据透视表。我打算实现的是每次我为 documents 插入记录时,这也会插入到我的自定义数据透视表中,而不仅仅是在我的 document_user 数据透视表中。任何帮助将不胜感激!感谢您的信息或提示。
更新
@Mina 感谢您提供的提示,但实际上这是我的插入或保存我的数据透视表。如何将它插入到我的修订表中?
文档控制器
public function postDocuments(Request $request)
{
$this->validate($request,
[
'title' => 'required|regex:/(^[A-Za-z0-9 ]+$)+/|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();
$user = Auth::user();
foreach($request->recipient_id as $recipientId)
{
$document->recipients()->sync([ $recipientId => ['sender_id' => $user->id]],false );
}
return redirect()->back();
}
【问题讨论】:
-
为什么是另一个数据透视表,它是直接与文档的关系。
-
@MinaAbadir 因为我所做的我需要为每个用户创建和接收文档的历史记录。这就是我创建 M:M 关系的原因。
-
一个文档可以被多个用户创建吗?
-
@PaulSpiegel 是的,它可以由许多用户创建。
标签: php laravel laravel-5.2