我正在尝试将 json 存储到数据库中并将其加载回来
我尝试存储
{name: "John", age: 31, city: "New York"}
Run Code Online (Sandbox Code Playgroud)
它存储正确。我检查了数据库,它显示正确。
{姓名:“约翰”,年龄:31,城市:“纽约”}
我不断地看到风景
"{name: \"John\", age: 31, city: \"New York\"}"
Run Code Online (Sandbox Code Playgroud)
这是我的代码。
public function store()
{
$paste = new Paste;
$paste->uuid = Str::uuid()->toString();
$paste->data = trim(Request::get('data',''));
$paste->save();
return Redirect::to('/paste/'.$paste->uuid)->with('success', 'Created');
}
public function show($uuid)
{
$paste = Paste::where('uuid',$uuid)->first();
return response()->json($paste->data);
}
Run Code Online (Sandbox Code Playgroud)
对我有什么提示吗?
可在此处重现
https://www.bunlongheng.com/paste
如果我这样做
public function show($uuid)
{
$paste = Paste::where('uuid',$uuid)->first();
return View::make('layouts.fe.pastes.show', get_defined_vars());
}
Run Code Online (Sandbox Code Playgroud)
在我看来,我只有这 1 行
{!!$paste->data!!}
Run Code Online (Sandbox Code Playgroud)
我得到的数据与我现在提交的数据相同。
{name: "John", age: 31, city: "New York"}
Run Code Online (Sandbox Code Playgroud)
但浏览器将其检测为文本,而不是响应 …
是否可以添加一个新列,将一些数据复制到这个新列并通过 Laravel 迁移更新另一列中的数据?
我有一张类似这样的桌子;
| ID | 物品 | 价格 |
|---|---|---|
| 1 | 项目一 | 100.00 |
| 2 | 项目二 | 200.00 |
现在我需要做的是,
old_price向该表添加一个新列price到新添加的old_price列price5 并更新同一列新表应该看起来像这样;
| ID | 物品 | 价格 | 旧价格 |
|---|---|---|---|
| 1 | 项目一 | 500.00 | 100.00 |
| 2 | 项目二 | 1000.00 | 200.00 |
是否有可能通过迁移或种子或其他东西来实现这一目标?
此更改需要在已经投入生产的应用程序上完成,因此删除并重新创建表对我来说不是一个选择。
此外,old_price创建该列只是为了保留该列当前值的引用price。在此之后它不会更新,如果一切都按照新价格进行,则可能会在以后的更新中删除。所以我不需要使用任何模型事件来更新列。
非常感谢您能在这方面给我的任何帮助。谢谢。
laravel laravel-seeding laravel-migrations laravel-schema-builder
如何使用 Laravel 5.2 的 Schema Builder 创建部分索引?
例如,create index alternate_listing_not_null on listings(alternate_listings_id) where alternate_listings_id is not null我将如何使用 Schema Builder 语法而不是查询来执行此操作?
我正在使用 PostgreSQL 9.4。
我这里有一个先有鸡还是先有蛋的问题。我正在 Laravel 中构建一个多租户应用程序,其中每个租户在 Postgrsql 服务器上都有自己的数据库。所以我有一份工作来创建一个新的租户,它调用:
Schema::connection($this->tenant->getDatabaseConnection())->createDatabase($this->tenant->getDatabaseName())
Run Code Online (Sandbox Code Playgroud)
因此$this->tenant->getDatabaseConnection(),选择一个租户数据库服务器来添加租户并返回该服务器的连接名称。然后$this->tenant->getDatabaseName()将返回该租户的数据库名称字符串。
我遇到了一个小问题。这会引发异常:
SQLSTATE[08006] [7] 致命:数据库“port=5432”不存在(SQL:创建数据库“local_tenant_(id)”编码“utf8”)
这是因为默认情况下连接的数据库名称为空。当用户登录到他们的租户时,我们动态地将租户模型中的 getDatabaseName() 注入其中。
但我不能在这里这样做,因为租户数据库尚不存在。所以这是我看到的选项:
在创建新租户的数据库时,选择服务器上现有租户的随机数据库作为“充当”。我真的不喜欢劫持另一个租户的数据库,即使是暂时的,尽管这应该对该租户产生 0 副作用。如果它是在服务器上配置的第一个租户,则没有可用的现有数据库,这使得这在我的书中是不可行的。
我可以使用数据库提供商 API 来创建租户数据库。这将是迄今为止最简单的,但会在本地和测试环境中中断,因此我想避免。
我可以绕过 Laravel 并为此建立与数据库的直接 PDO 连接,但我想说,如果我找不到更好的东西,这是我的最后手段。
从技术上讲,您不必选择数据库即可使用创建数据库命令。这是 Laravel 架构生成器的一个特性,它会在调用方法之前尝试选择数据库(在本例中为 CreatedDatabase)。有没有办法解决这个问题,这样我就可以在 Laravel 不首先尝试选择空数据库的情况下创建数据库?
我刚刚创建了新的迁移。运行它后,我看到我的字段type 不是 ENUM type。它有一个VARCHAR(255) 类型
Schema::create('payments', function (Blueprint $table) {
$table->increments('id');
$table->text('response');
$table->enum('type', ['apple', 'paypal']);
$table->smallInteger('flags');
$table->timestamps();
});
Run Code Online (Sandbox Code Playgroud)
有人可以告诉我可能是什么原因。我是否遗漏了什么,我尝试了多次 - 得到相同的结果。
我正在使用 PostgreSQL 9.5.4
postgresql laravel eloquent laravel-schema-builder laravel-5.3
我正在使用 Laravel 5.7 和 SQL Server 2017,我想生成一个varchar(50)名为name.
执行此代码给了我一个nvarchar(50):
Schema::create('test', function(Blueprint $table) {
$table->string('name', 50);
});
Run Code Online (Sandbox Code Playgroud)
如何区分创建varchar或nvarchar字段?
nvarchar laravel laravel-migrations laravel-schema-builder laravel-5.7
如何设置不是创建方法主键的数据库自动增量字段?
唯一的方法是使用原始查询?
DB::statement('ALTER TABLE table CHANGE field field INT(10)AUTO_INCREMENT');
我正在尝试使用 Laravel 创建迁移,但我处于一种需要自定义列类型的情况,因为我想要的列类型不包含在模式构建器中,即“POLYGON”。所以我想知道如何创建自定义列类型,而不是架构生成器中已有的列类型。
我想要的 SQL 语句如下所示:
更改表
xxx添加polygonPOLYGON 不为空
是否可以自己做,或者我被迫使用这样的库?
我知道我可以这样做:
DB::statement('ALTER TABLE country ADD COLUMN polygon POLYGON');
Run Code Online (Sandbox Code Playgroud)
但这导致我出现该表不存在的错误。
laravel ×8
laravel-8 ×2
php ×2
postgresql ×2
eloquent ×1
json ×1
laravel-5.2 ×1
laravel-5.3 ×1
laravel-5.7 ×1
nvarchar ×1