学说2:保存“日期”字段

时间:2016-08-23 17:07:06

标签: php date doctrine-orm

我有这个YAML定义实体:

Entity\Visit:
    type: entity
    table: visit
    fields:
        date:
            type: date
            id: true
        count:
            type: integer
            nullable: true
            options:
                unsigned: true
                default: 1

    lifecycleCallbacks: {  }

创建日期字段:

/**
 * @var \DateTime
 *
 * @ORM\Column(name="date", type="date")
 * @ORM\Id
 * @ORM\GeneratedValue(strategy="NONE")
 */
private $date;

如果我尝试以这种方式插入新记录:

$date = new \DateTime('now');

$visit = new \Entity\Visit();
$visit->setDate($date);
$visit->setCount(1);
$em->persist($visit);
$em->flush();

我有这个错误:

  

UnitOfWork.php第1413行中的ContextErrorException:可捕获致命   错误:类DateTime的对象无法转换为字符串

我这样做:

$date = new \DateTime('now');
$date = $date->format('Y-m-d');

显示此错误:

  

DateType.php第53行中的FatalThrowableError:调用成员函数   string上的format()

有人可以帮助我使用Doctrine2插入(或更新)'日期'字段吗?感谢。

更新:数据库中的字段必须是“日期”字段。

2 个答案:

答案 0 :(得分:1)

最后,我自己发现了问题:问题是因为主键是日期列。似乎Doctrine不喜欢那些东西。

我的新YML文件:

Entity\Visit:
    type: entity
    table: visit
    fields:
        id:
            type: integer
            id: true
            generator:
                strategy: AUTO
            options:
                unsigned: true
        date:
            type: date
            unique: true
        count:
            type: integer
            nullable: true
            options:
                unsigned: true
                default: 1

    lifecycleCallbacks: {  }

现在,我可以这样做:

$date = new \DateTime('now');
$visit = new \Entity\Visit();
$visit->setDate($date);
$visit->setCount(1);
$em->persist($visit);
$em->flush();

答案 1 :(得分:0)

请尝试使用以下代码:

<telerik:RadAutoCompleteBox RenderMode="Lightweight" runat="server" ID="CommentsTB1" EmptyMessage="Please type here"
                                        DataSourceID="SqlDataSource1" DataTextField="Comments" InputType="Text" Width="350" DropDownWidth="150px" Delimiter=" ">
                                    </telerik:RadAutoCompleteBox>