我在symfony 3上有此错误:
执行插入视频时发生了一个例外(标题, 描述,状态,图像,video_path,create_at,updated_at, user_id(value(?,?,?,?,?,?,,?('with params [titulo del del Video1",Null,Null,Null,Null,Null," 2017-05-06 08:10:16"," 2017-05-06 08:10:16",null]:
SQLSTATE [23000]:完整性约束违规:1048列'user_id' 不能为null
我有很多从$用户数据到var $视频的空数...在帖子末尾查看转储
$user_id = ($identity->sub != null) ? $identity->sub : null;
$title = (isset($params->title)) ? $params->title : null;
$description = (isset($params->description)) ? $params->description : null;
$status = (isset($params->status)) ? $params->status : null;
if ($user_id != null && $title != null) {
$em = $this->getDoctrine()->getManager();
$user = $em->getRepository("BackendBundle:User")->findOneBy(
array(
"id" => $user_id
));
$video = new Video();
$video->setUser($user);
$video->setTitle($title);
$video->setDescription($description);
$video->setStatus($status);
$video->setCreatedAt($createdAt);
$video->setUpdatedAt($updatedAt);
var_dump($video);
$em->persist($video);
$em->flush();
$ video的var_dump:
object(BackendBundleEntityVideo)#313 (10) {
["id":"BackendBundleEntityVideo":private]=>
NULL
["title":"BackendBundleEntityVideo":private]=>
string(17) "titulo del video1"
["description":"BackendBundleEntityVideo":private]=>
NULL
["status":"BackendBundleEntityVideo":private]=>
NULL
["image":"BackendBundleEntityVideo":private]=>
NULL
["videoPath":"BackendBundleEntityVideo":private]=>
NULL
["createdAt":"BackendBundleEntityVideo":private]=>
object(DateTime)#281 (3) {
["date"]=>
string(26) "2017-05-06 08:10:16.255330"
["timezone_type"]=>
int(3)
["timezone"]=>
string(12) "Europe/Paris"
}
["updatedAt":"BackendBundleEntityVideo":private]=>
object(DateTime)#282 (3) {
["date"]=>
string(26) "2017-05-06 08:10:16.255350"
["timezone_type"]=>
int(3)
["timezone"]=>
string(12) "Europe/Paris"
}
["user":"BackendBundleEntityVideo":private]=>
object(BackendBundleEntityUser)#317 (8) {
["id":"BackendBundleEntityUser":private]=>
int(8)
["role":"BackendBundleEntityUser":private]=>
string(4) "user"
["name":"BackendBundleEntityUser":private]=>
string(7) "Pruebas"
["surname":"BackendBundleEntityUser":private]=>
string(7) "Pruebas"
["email":"BackendBundleEntityUser":private]=>
string(19) "pruebas@pruebas.com"
["password":"BackendBundleEntityUser":private]=>
string(64) "718e3978516d387924d91980a7e21af2f434de445731951a6585bda2eacef046"
["image":"BackendBundleEntityUser":private]=>
string(14) "1494043934.png"
["createdAt":"BackendBundleEntityUser":private]=>
object(DateTime)#314 (3) {
["date"]=>
string(26) "2017-05-05 10:05:36.000000"
["timezone_type"]=>
int(3)
["timezone"]=>
string(12) "Europe/Paris"
}
}
["User":"BackendBundleEntityVideo":private]=>
NULL
}
查看$视频["用户"]已经满了,为什么我的齐平时为空?有人知道为什么吗?
视频实体setuser方法
public function setUser(BackendBundleEntityUser $user = null)
{
$this->user = $user;
return $this;
}
与用户数据库的关系视频
manyToOne:
User:
targetEntity: User
cascade: { }
fetch: LAZY
mappedBy: null
inversedBy: null
joinColumns:
user_id:
referencedColumnName: id
orphanRemoval: false
将字段名称User
更改为 user
。
user:
targetEntity: User
整个设置:
manyToOne:
user:
targetEntity: User
cascade: { }
fetch: LAZY
mappedBy: null
inversedBy: null
joinColumns:
user_id:
referencedColumnName: id
orphanRemoval: false
您还应该运行命令以检查设置所有关系是否有效:
php bin/console doctrine:schema:validate
您可能需要在AddVideo(视频$ video(下的用户实体中需要{...}添加$ video-> setuser($ this(;。
如您所见,var_dump的最后一行为null。