【问题标题】:Get data from an insert query?从插入查询中获取数据?
【发布时间】:2014-08-17 07:48:53
【问题描述】:

我知道您可以通过以下方式获取查询的插入 ID:

$query->id

但是有没有办法从查询中取回数据?

例如,我希望将插入的内容返回给用户并将其输出到我的页面上。如果我只是返回发送用于插入的数据,那么它不会被清理并可能导致问题。

有没有办法做到这一点?

或者我是否需要进行另一个查询,或者只是手动清理数据?

【问题讨论】:

  • 如何再次从数据库加载内容并返回?您有最后插入的 id,所以这并不难。
  • 您到底想达到什么目标? $query 包含什么内容?

标签: php laravel laravel-4 eloquent


【解决方案1】:

数据库不返回插入的数据;他们返回一个状态,表明它是否成功插入。所以你不能从你的$query取回数据。

也就是说……您刚刚插入了数据!您已经可以在程序中访问它。根据您的需要,这可能就足够了。或者它可能不需要 - 如果您的程序需要自动生成的时间戳、从数据库触发器生成的数据或来自数据库的其他信息,那么您将不得不使用另一个查询。但是,如果您要查找插入的数据及其 ID,那么您已经在程序中获得了这些数据,而不必执行另一个数据库查询。

【讨论】:

  • 谢谢,但我应该在输出到视图之前清理数据 - 对吗?
  • 视情况而定。如果您将经过清理的数据存储在数据库中,那么可以。如果不是:您的观点应该已经假定传入的数据是不卫生的,并自行进行清理。
  • 我可以在视图中使用三方括号执行此操作:{{{ $var }}}?
  • 是的,如果你使用Blade templating,三花括号会转义它。
【解决方案2】:

这取决于您如何清理数据。如果您正在使用 Accessors 和 Mutators - 那么当您将信息添加到对象时 - 它已经被清理了。

因此,如果您有跟随修改器或访问器(取决于您使用的)

 class User extends Eloquent {

    public function getNameAttribute($value)
    {
        return ucwords($value);
    }

}

然后结果如下:

   $user->name = "test name";
   echo $user->name;   // "Test Name"

但如果你做一些其他类型的逻辑,它可能不一样。

【讨论】:

  • 所以,如果我这样做了: $user = new User; $user->name = '约翰'; $用户->保存();然后我用 $user->name 做了一些事情,那个值会被清理?
  • 这取决于您所说的“已消毒”。但是任何突变/访问器都应用于对象
猜你喜欢
  • 1970-01-01
  • 2018-08-27
  • 2014-12-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-18
  • 1970-01-01
相关资源
最近更新 更多