【发布时间】:2016-09-24 17:32:36
【问题描述】:
我明白了
未定义的列:7 错误:不存在 la columna «users_id_seq» LINE 1: ...ated_at", "updated_at") 值 ($1, $2) 返回 "users_id_... ^ (SQL: 插入 "users" ("created_at", "updated_at") 值 (2016-05-26 15:19:02, 2016-05-26 15:19:02) 返回 "users_id_seq")
从控制器运行插入时
这是我的实体类
namespace App\Entities\Users;
use Analogue\ORM\Entity;
class BaseEntity extends Entity
{
private $remember_token;
private $created_at;
private $updated_at;
private $deleted_at;
private $id;
private $name;
private $email;
private $password;
private $identification;
private $cellphone;
Here are getter/setter pairs for each property
}
这是我的地图类
namespace App\Entities\Users;
use App\Entities\BaseEntityMap;
class UserMap extends BaseEntityMap
{
protected $primaryKey = 'id';
public $softDeletes = true;
public $timestamps = true;
}
这是控制器类
namespace App\Http\Controllers\Users;
use App\Http\Controllers\Controller;
use App\Http\ServiceResponse;
use App\Entities\Users\User;
use Faker\Factory as Faker;
use Carbon\Carbon;
use Monolog\Logger as Log;
class UserController extends Controller
{
public function createRandom()
{
$logger = new Log("error");
$randomUsers = array();
for($i=0; $i<1000; $i++)
{
$userMapper = $this->mapper->mapper(User::class);
$faker = Faker::create();
$user = new User();
$user->setName($faker->name);
$user->setEmail($faker->email);
$user->setPassword(bcrypt(rand(1000, 9999)));
$user->setIdentification(bcrypt(rand(1000000, 100000000)));
$user->setCellphone($faker->phoneNumber);
//$user->setCreatedAt(Carbon::now());
//$user->setUpdatedAt(Carbon::now());
//$user->setDeletedAt(null);
$logger->error("user --> " . print_r($user, true));
$userMapper->store($user);
$randomUsers[] = $user->convertToStdClass();
}
$response = new ServiceResponse(0, "createRandom", $randomUsers, "success");
return response()->json($response->toJson());
}
}
这就是 postgres 日志文件中查询的样子
2016-05-26 10:22:17 COT [4777-1] postgres@ewbackend ERROR: no existe la columna «users_id_seq» en carácter 76
2016-05-26 10:22:17 COT [4777-2] postgres@ewbackend SENTENCIA: insert into "users" ("created_at", "updated_at") values ($1, $2) returning "users_id_seq"
用英文说“users_id_seq”列不存在,但我已经检查了数据库,并且该序列存在。
这是用户表的sql
-- Table: public.users
-- DROP TABLE public.users;
CREATE TABLE public.users
(
id integer NOT NULL DEFAULT nextval('users_id_seq'::regclass),
name character varying(255) NOT NULL,
email character varying(255) NOT NULL,
password character varying(255) NOT NULL,
identification character varying(255) NOT NULL,
cellphone character varying(255) NOT NULL,
remember_token character varying(100),
created_at timestamp(0) without time zone,
updated_at timestamp(0) without time zone,
deleted_at timestamp(0) without time zone,
CONSTRAINT users_pkey PRIMARY KEY (id),
CONSTRAINT users_email_unique UNIQUE (email),
CONSTRAINT users_identification_unique UNIQUE (identification)
)
WITH (
OIDS=FALSE
);
ALTER TABLE public.users
OWNER TO postgres;
我还检查了表(我使用迁移创建,只需在 laravel 5.2.33 中包含的迁移用户示例中添加一些字段)并且所有列都在那里,并且类型正确
我尝试自己分配日期,但这没有任何区别。
我也尝试在我的地图类上退出 timestamps=true,但随后我看到另一个错误,其中查询在 postgres 日志文件中没有字段或值,我需要时间戳列。
显示用户实例的日志,显示所有数据均已正确设置。
我也尝试将实体属性公开而不是私有,但这不起作用。
所以我很欣赏关于这个问题的任何想法。另外,如果您能告诉我模拟是否支持 postgres 事务(如果其中一个查询失败或仅在所有查询都成功操作时提交,则一组查询作为一个查询运行以失败)
【问题讨论】:
-
能否包含
users表的SQL 定义? -
我将编辑问题以包含该问题,请一分钟
-
我把sql放到问题上,也谢谢
标签: php postgresql laravel laravel-5.2 datamapper