【问题标题】:getting error in laravel related with create input to modellaravel 中出现与创建模型输入相关的错误
【发布时间】:2017-03-21 23:22:34
【问题描述】:

我是 laravel 的初学者,我试图找出代码有什么问题,我试图将 $userr 传递为整数,但发现了不同的困难。这是我得到的错误:

Connection.php 第 647 行中的 QueryException: SQLSTATE[HY000]: 一般错误: 1366 Incorrect integer value: '[{"id":5}]' for column 'userid' at row 1 (SQL: insert into objectsaccess (userid, updated_at, @ 987654324@) 个值 ([{"id":5}], 2017-03-21 23:11:12, 2017-03-21 23:11:12))

型号代码:

   $userr = User::select('users.id')
        ->where(['remember_token' => $token])

        ->get();

    $objectt = Object::select('objects.id')
        ->where(['objects.name' => $passname])
        ->get();

    $inputs = [  'userid' => $userr,'objectid' => $objectt];

    ObjectAccess::create($inputs);

我想在 objectsaccess 中创建一个带有用户 ID 和对象 ID 的新行。但没有成功。

知道这是为什么吗?

谢谢!

编辑 1:

修复了第一个问题,但我得到了错误:

Collection.php 第 1440 行中的错误异常: 未定义的偏移量:0 在 Collection.php 第 1440 行 在 HandleExceptions->handleError(8, '未定义偏移量: 0', '/var/www/html/rx1/vendor/laravel/framework/src/Illuminate/Support/Collection.php', 1440, array('key' = > 0)) 在 Collection.php 第 1440 行 在 Object.php 第 140 行中的 Collection->offsetGet(0)

    if($object)
    {


        $return['errors'] = 'Send Successful';

        $return['status'] = 200;
        $return['success'] = 1;
        $return['content'] = $object['0']->content; // this is line 140  of object.php
        $return['ylink'] = $object['0']->ylink;
        $return['slink'] = $object['0']->slink;
        return $return;
    }

编辑 2($object):

$object = Object::select('objects.*', 'users.LAST','users.remember_token')
        ->join('users', 'users.LAST', '=', 'objects.passvariable')
       ->where(['remember_token' => $token])
        //->where('objects.passvariable', 'users.passvariable')
        ->where(['objects.name' => $passname])
        ->get();

【问题讨论】:

  • 您正在为 id 传递一个对象,而不是一个整数。 $inputs = [ 'userid' => $userr->id,'objectid' => $objectt->id]; 此外,您应该考虑为此使用 Eloquent 关系。
  • 我在 Collection.php 第 1440 行遇到 ErrorException:未定义的偏移量:0

标签: laravel


【解决方案1】:

您需要先完善您的代码。也许使用评论中提到的关系。但首先要像这样修复您的查询。

 $userr = User::select('id')
 ->where('remember_token', $token)
 ->first(); //<-- replace get()

因为get()返回一个集合,首先返回一个对象。同样适用于$objectt

那么你的 SQL 只考虑了userid 而忽略了objectid。也许,您没有在ObjectAccess$fillable 数组中添加objectid

最后你可以简单地做

ObjectAccess::create([
    'userid' => $userr->id,
    'objectid' => $objectt->id
]);

编辑

由于您的 $object 变量实际上是一个集合,因此请这样做。

if ( $object ) {
    $return['errors'] = 'Send Successful';
    $return['status'] = 200;
    $return['success'] = 1;
    $first = $object->first();

    if ( $first ) {
        $return['content'] = $first->content;
        $return['ylink']   = $first->ylink;
        $return['slink']   = $first->slink;
    }

    return $return;
}

按照惯例,请在末尾使用 s 命名您的集合/数组变量,以便您或任何其他开发人员知道它是复数形式,因此它可以是集合或数组。

【讨论】:

  • 你好,我已经尝试过这样的代码,但是gettign下一个错误:Collection.php第1440行中的ErrorException:未定义的偏移量:0
  • 我认为这段代码修复了你在这个问题中提出的原始错误。您现在收到的错误来自其他地方,因为我没有玩收藏。您可以发布该函数中的所有代码吗?更新您的问题并在您的函数中发布所有代码。您正在使用收集/数组并收到该错误的地方。
  • 请标记我的答案,因为我解决了您最初的问题。出现的所有其他问题都与您最初的问题无关,但我很乐意提供帮助。检查我的编辑1
  • 刷新页面。
  • $object 与 $objectt 不同
猜你喜欢
  • 1970-01-01
  • 2017-05-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-13
  • 2014-10-13
  • 1970-01-01
  • 2023-03-09
相关资源
最近更新 更多