将具有不同语言的2张相同的帖子表存储到数据库中
我正在建立一个多语言网站。 在这种情况下,只有2种语言,它是使用Laravel的印度尼西亚语和英语。 我有帖子表,它会存储每个帖子的ID,而post_translations表用于存储本地,标题和帖子的描述。 将数据存储到数据库时遇到了问题。 我不知道如何存储帖子,除了我已经添加了2个印尼文和英文相同的文章。
这是结果(错误)
帖子表
id
1
2
post_translations表
id post_id locale title
1 1 en fisrt post
2 2 id post yang pertama
达到最终结果
帖子表
id
1
post_translations表
id post_id locale title
1 1 en fisrt post
2 1 id post yang pertama
PostController中
public function store(Request $request) {
$this->validate($request, [
'title' => 'required',
'slug' => 'required',
'content' => 'required'
]);
$post = new Post;
$post->title = $request->title;
$post->slug = $request->slug;
$post->content = $request->content;
$post->save();
return redirect()->route('post.index');
}
好的,现在我们走了(请注意,这不是唯一的方法):
安装spatie / laravel-translatable with
作曲家需要spatie / laravel翻译
**注意:对于原生spatie / laravel可翻译版本2 **
用这个结构创建一个表格:
CREATE TABLE articles
( id
int(10)UNSIGNED NOT NULL, title
text COLLATE utf8_unicode_ci, slug
text COLLATE utf8_unicode_ci, content
text COLLATE utf8_unicode_ci, created_at
timestamp NULL DEFAULT NULL, updated_at
timestamp NULL DEFAULT NULL)ENGINE = InnoDB DEFAULT CHARSET = utf8 COLLATE = utf8_unicode_ci ;
注意:beter使用迁移。 我刚刚导出了一个我之前测试过的表
INSERT INTO `pages` (`id`, `title`, `slug`, `content`, `created_at`, `updated_at`) VALUES
(1, '{"ro":"Acasu0103","en":"Home"}', NULL, '{"ro":"<p><strong>Test title</strong></p>rnrn<p>Test content romanian</p>rn","en":"<p><strong>test title english</strong></p>rnrn<p>test content english.</p>rn"}', '2017-04-03 11:45:56', '2017-04-03 12:15:16');
我认为你应该改变你的桌子结构:
帖子 :id,slug。
post_translations :id,post_id,语言环境,标题,内容
还要添加关系到你的Post模型:
public function translations()
{
return $this->hasMany(PostTranslation::class, 'post_id');
}
并更新你的控制器:
$post = new Post;
$post->slug = $request->slug;
$post->save();
$post->translations()->create([
'locale' => 'en', //or grab it from $request
'title' => $request->title,
'content' => $request->content
])
它会创建您的文章并添加翻译
链接地址: http://www.djcxy.com/p/37511.html上一篇: Storing 2 same id of post table with different language into database