Symfony2 \ Doctrine - 数据库中的存储阵列

时间:2016-04-23 11:15:56

标签: php mysql symfony doctrine-orm

我正在构建一个电子商务应用程序,我想存储用户的订单。

仅供参考:我正在使用public class Time_Class_sub { private int hour; private int minute; private int second; public void Time_Class_sub(int h, int m, int s){ //if the condition is met, assign hour = h. If not, h = 0 hour = ((h >= 0 && h < 24) ? h : 0); minute = ((m >= 0 && m < 60) ? m : 0); second = ((s >= 0 && s < 60) ? s : 0); } public String tomilitary () { return String.format("%02d:%02d:%02d", hour, minute, second); } } symfony 2.8

所以我的Order实体中有一个数组字段Doctrine2。在我的控制器中,我构建了一个包含我想要的所有信息的数组(产品,用户信息,数量,tva)。 但我得到了一个SQL错误,我不知道为什么。但我认为这是symfony2序列化我的数组的时候。

错误:

  

未捕获的PHP异常Doctrine \ DBAL \ Exception \ SyntaxErrorException:“执行'INSERT INTO命令(validate,date,reference,order,user_id)VALUES(?,?,?,?,?)'时发生异常[0,“2016-04-23 13:07:55”,0,“a:7:{s:3:\”tva \“; a:2:{s:3:\”20%\“; d:299.80000000000001; S:3:\ “10%\”; d:21;} S:7:\ “产品\”;一个:3:{I:1;一个:5:{S:9:\”参考\ “; S:9:\” PROD00001 \ “; S:4:\” 名\ “; S:10:\” 的MacBookPro \ “; S:8:\” 量\“; I:1; S: 7:\ “priceHT \”; d:999; S:8:\ “priceTTC \”; d:1198.8;} I:2; A:5:{S:9:\ “参考\”; S:9: \“PROD00002 \”; s:4:\“name \”; s:16:\“Headphones Apple \”; s:8:\“quantity \”; s:1:\“3 \”; s:7 :\ “priceHT \”; d:69.989999999999995; S:8:\ “priceTTC \”; d:76.989999999999995;} I:3;:5:{S:9:\ “参考\”; S:9:\ “PROD00003 \”; s:4:\“name \”; s:20:\“T \ u00e9l \ u00e9vision Samsung \”; s:8:\“quantity \”; i:1; s:7:\“ priceHT \ “; d:499.99000000000001; S:8:\” priceTTC \ “; d:599.99000000000001;}} S:8:\” 交货\ “;一个:9:{S:9:\” 名字\“; S :3:\ “Doe的\”; S:8:\ “姓氏\”; S:4:\ “约翰\”; S:5:\ “电子邮件\”; S:12:\“test@test.fr \ “; S:5:\” 电话\“; S:1 0:\“6666666666 \”; s:6:\“adress \”; s:14:\“10 rue du test \”; s:10:\“complement \”; N; s:4:\“city \ “; S:6:\” 南特\ “; S:7:\” 国家\ “; S:6:\” 法国\ “; S:10:\” 邮编\ “; S:5:\” 44000 \ “;} S:6:\” INVOIC \ “;一个:9:{S:9:\” 名字\ “; S:3:\” Doe的\ “; S:8:\” 姓氏\“; S :4:\ “约翰\”; S:5:\ “电子邮件\”; S:12:\ “test@test.fr \”; S:5:\ “电话\”; S:10:\“6666666666 \“; s:6:\”adress \“; s:14:\”10 rue du test \“; s:10:\”complement \“; N; s:4:\”city \“; s: 6:\ “南特\”; S:7:\ “国家\”; S:6:\ “法国\”; S:10:\ “邮编\”; S:5:\ “44000 \”;} S; :8:\ “amountHT \”; d:1709; S:9:\ “amountTTC \”; d:2030; S:5:\ “令牌\”; S:40:\ “2627ca31ef4d9d6ab3bf69dd38f02cbb8468bf7f \”;}”, 2]:SQLSTATE [42000]:语法错误或访问冲突:1064 SQL语法中有错误;查看与您的MySQL服务器版本对应的手册,以便在'order,user_id)附近使用正确的语法VALUES(0,'2016-04-23 13:07:55',0,'a:7:{s:3 :\“tva \”; a:2:{s:3:'第1行'在C:\ wamp \ www \ eCommerce \ vendor \ doctrine \ dbal \ lib \ Doctrine \ DBAL \ Driver \ AbstractMySQLDriver.php第90行

这是我的订单实体

order

我的控制器

/**
  * Orders
  *
  * @ORM\Table(name="orders")
  * @ORM\Entity(repositoryClass="Ecommerce\EcommerceBundle\Repository\OrdersRepository")
*/
class Orders
{
/**
 * @var int
 *
 * @ORM\Column(name="id", type="integer")
 * @ORM\Id
 * @ORM\GeneratedValue(strategy="AUTO")
 */
private $id;

/**
 * @var bool
 *
 * @ORM\Column(name="validate", type="boolean")
 */
private $validate;

/**
 * @var \DateTime
 *
 * @ORM\Column(name="date", type="datetimetz")
 */
private $date;

/**
 * @var int
 *
 * @ORM\Column(name="reference", type="integer")
 */
private $reference;

/**
 * @ORM\ManyToOne(targetEntity="Users\UsersBundle\Entity\Users", inversedBy="orders")
 * @ORM\JoinColumn(nullable=true)
 */
private $user ;

/**
 * @var array
 *
 * @ORM\Column(name="order", type="array")
 */
private $order;


/**
 * Get id
 *
 * @return integer 
 */
public function getId()
{
    return $this->id;
}

/**
 * Set validate
 *
 * @param boolean $validate
 * @return Orders
 */
public function setValidate($validate)
{
    $this->validate = $validate;

    return $this;
}

/**
 * Get validate
 *
 * @return boolean 
 */
public function getValidate()
{
    return $this->validate;
}

/**
 * Set date
 *
 * @param \DateTime $date
 * @return Orders
 */
public function setDate($date)
{
    $this->date = $date;

    return $this;
}

/**
 * Get date
 *
 * @return \DateTime 
 */
public function getDate()
{
    return $this->date;
}

/**
 * Set reference
 *
 * @param integer $reference
 * @return Orders
 */
public function setReference($reference)
{
    $this->reference = $reference;

    return $this;
}

/**
 * Get reference
 *
 * @return integer 
 */
public function getReference()
{
    return $this->reference;
}

/**
 * Set user
 *
 * @param \Users\UsersBundle\Entity\Users $user
 * @return Orders
 */
public function setUser(\Users\UsersBundle\Entity\Users $user = null)
{
    $this->user = $user;

    return $this;
}

/**
 * Get user
 *
 * @return \Users\UsersBundle\Entity\Users
 */
public function getUser()
{
    return $this->user;
}
/**
 * Constructor
 */
public function __construct()
{
    $this->products = new \Doctrine\Common\Collections\ArrayCollection();
}

/**
 * Add products
 *
 * @param \Ecommerce\EcommerceBundle\Entity\Products $products
 * @return Orders
 */
public function addProduct(\Ecommerce\EcommerceBundle\Entity\Products $products)
{
    $this->products[] = $products;

    return $this;
}


/**
 * Set order
 *
 * @param array $order
 * @return Orders
 */
public function setOrder($order)
{
    $this->order = $order;

    return $this;
}

/**
 * Get order
 *
 * @return array 
 */
public function getOrder()
{
    return $this->order;
}
}

我现在真的被卡住了

告诉我您是否需要更多信息或代码。

感谢。

1 个答案:

答案 0 :(得分:2)

for (isamp in 1:length(sample.files)){ con <- file(sample.files[isamp], open="r") # close(con) num.lines<-1 # so does while llop at least once reads<-max.reads counter<- -1 while (num.lines >0){ counter<-counter+1 print(paste0("Reading chunk)) if(counter==0){ mydata<-try(scan(con,what=character(num.vars),skip=(reads*counter)+skip.lines,nlines=reads,sep="\t",fill=TRUE,na.strings="",quote="\"")) }else{ mydata<-try(scan(con,what=character(num.vars),nlines=reads,sep="\t",fill=TRUE,na.strings="",quote="\"")) } num.lines<-length(mydata)/(num.vars) print(num.lines) if(num.lines==0){next} dim(mydata)<-c(num.vars,num.lines) mydata<-t(mydata) colnames(mydata)<-column.labels If (total accumulated rows are 500,000 line){ 'Do this job' } } 是一个保留的SQL字。你需要引用它:Quoting Reserved Words