laravel - Laravel 多语言站点数据库
问题描述
我正在为阿拉伯语和英语建立一个 Laravel 电子商务网站。
假设我有带有标题字段的类别表。我想以两种语言插入标题字段。所以我为title_en
和创建了迁移title_ar
。
<?php
namespace App;
use App\Traits\MultiLanguage;
use Illuminate\Database\Eloquent\Model;
class Category extends Model
{
use MultiLanguage;
protected $fillable = [
'title_en', 'title_ar',
];
/**
* This array will have the attributes which you want it to support multi languages
*/
protected $multi_lang = [
'title',
];
}
这是多语言特征:
<?php
namespace App\Traits;
use Illuminate\Support\Facades\App;
trait MultiLanguage
{
public function __get($key)
{
if (isset($this->multi_lang) && in_array($key, $this->multi_lang)) {
$key = $key . '_' . App::getLocale();
}
return parent::__get($key);
}
}
但是当表字段也很多时怎么办,如何插入记录。可能吗?
解决方案
我不认为拥有title_en
并且title_ar
是一个好主意。而是只有一个title
名为 then 的额外列lang
,例如根据您的语言进行查询
FooModel::where('lang', $lang)->get();
推荐阅读
- java - 停止程序,直到从 JTextField 获得输入
- angular - Angular Material Dialog:带有数据的解析器?
- python - ValueError:张量原型大于 2GB
- java - SpringBoot 覆盖 AnnotationConfigApplicationContext 抛出未定义的此类 bean
- php - 当您想在数据更新页面上显示单选按钮时如何设置它
- php - 更新单个列
- c# - 将 GridView 控件设置为返回 GridView 的方法
- c# - System.Text.Json 中 Newtonsoft.Json 的 / Json.Net 的 JsonProperty 字段的等价物是什么?
- node.js - Dynamo 和 Mongo 的 NodeJS 包装器
- opencl - 在 OpenCL 1.2 中使用 cl_arm_import_memory 扩展的零复制缓冲区 - arm mali midgard GPU