-1
Warning: spl_object_hash() expects parameter 1 to be object, string given in
/var/www/sitetwo/vendor/doctrine/orm/lib/Doctrine/ORM/UnitOfWork.php line 1367

我通过 php app/console 命令使用Category.php和使用 yml 映射注释创建了 MainBlogBu​​ndle。Product.php在对添加/编辑/删除/显示操作使用 CRUD 操作后,我尝试添加一个类别,提交后Add category form我得到

Warning: spl_object_hash() expects parameter 1 to be object, string given in
/var/www/sitetwo/vendor/doctrine/orm/lib/Doctrine/ORM/UnitOfWork.php line 1367

我在 github 上发布了我的示例代码,下面是数据库的脚本。

git@github.com:veerpartap/ProblemSymfony.git

/****************************************************************************/

-- phpMyAdmin SQL Dump
-- version 3.4.10.1deb1
-- http://www.phpmyadmin.net
--
-- Host: localhost
-- Generation Time: Oct 26, 2013 at 01:56 PM
-- Server version: 5.5.32
-- PHP Version: 5.5.3-1+debphp.org~precise+2

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";

--
-- Database: `sitetwo`
--

-- --------------------------------------------------------

--
-- Table structure for table `category`
--

CREATE TABLE IF NOT EXISTS `category` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1 ;

-- --------------------------------------------------------

--
-- Table structure for table `Company`
--

CREATE TABLE IF NOT EXISTS `Company` (
 `id` int(11) NOT NULL AUTO_INCREMENT,
 `company_name` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
 `address` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
 `owner_name` varchar(150) COLLATE utf8_unicode_ci NOT NULL,
 `status` tinyint(1) NOT NULL,
 `created` datetime NOT NULL,
 PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=3 ;

--
-- Dumping data for table `Company`
--

 INSERT INTO `Company` (`id`, `company_name`, `address`, `owner_name`, `status`, `created`) VALUES
(1, 'My First Company', 'Street 5A Sector 85 Chandigarh 1665588', 'Mr. Prateek Kumar', 1, '2013-09-06 00:00:00'),
(2, 'My Second Private Company', 'Street 34N Sector 89, Chandigarh 165898', 'Mr. Saurabh Shuja', 1, '2013-09-07 00:00:00');

-- --------------------------------------------------------

--
-- Table structure for table `Post`
--

CREATE TABLE IF NOT EXISTS `Post` (
 `id` int(11) NOT NULL AUTO_INCREMENT,
 `title` varchar(250) COLLATE utf8_unicode_ci NOT NULL,
 `body` longtext COLLATE utf8_unicode_ci NOT NULL,
 `published` datetime NOT NULL,
 PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1 ;

-- --------------------------------------------------------

--
-- Table structure for table `posts`
--

CREATE TABLE IF NOT EXISTS `posts` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`title` varchar(250) COLLATE utf8_unicode_ci NOT NULL,
`body` longtext COLLATE utf8_unicode_ci NOT NULL,
`published` datetime NOT NULL,
 PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1 ;

-- --------------------------------------------------------

--
-- Table structure for table `products`
--

CREATE TABLE IF NOT EXISTS `products` (
 `id` int(11) NOT NULL AUTO_INCREMENT,
 `category_id` int(11) DEFAULT NULL,
 `name` varchar(100) COLLATE utf8_unicode_ci NOT NULL,
 `price` decimal(10,0) NOT NULL,
 `description` longtext COLLATE utf8_unicode_ci NOT NULL,
 PRIMARY KEY (`id`),
 KEY `IDX_B3BA5A5A12469DE2` (`category_id`)
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1 ;

 -- --------------------------------------------------------

 --
 -- Table structure for table `User`
 --

   CREATE TABLE IF NOT EXISTS `User` (
    `id` int(11) NOT NULL AUTO_INCREMENT,
    `first_name` varchar(150) NOT NULL,
    `last_name` varchar(150) NOT NULL,
   `sex` tinyint(1) DEFAULT NULL,
   `date_of_birth` datetime DEFAULT NULL,
   `education` varchar(10) NOT NULL,
   `mobile` varchar(10) NOT NULL,
   `email` varchar(100) NOT NULL,
   `address` varchar(200) NOT NULL,
   `status` tinyint(1) DEFAULT NULL,
   PRIMARY KEY (`id`)
   ) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;

   --
   -- Dumping data for table `User`
   --

   INSERT INTO `User` (`id`, `first_name`, `last_name`, `sex`, `date_of_birth`,  `education`, `mobile`, `email`, `address`, `status`) VALUES
  (1, 'Veerpartap', 'Singh', 1, '2008-11-24 00:00:00', 'MCA', '71505897', 'metveerpartapsingh@gmail.com', 'hl 99 phase 2 sas nagar mohali', 1),
  (2, 'Vicky', 'Sharma', 1, '2008-05-09 00:00:00', 'MCA', '88754257', 'vicky.sharma@gmail.com', 'Village Burari, Jila Nawanshar', 1);

  --
  -- Constraints for dumped tables
  --

  --
  -- Constraints for table `products`
  --
  ALTER TABLE `products`
  ADD CONSTRAINT `FK_B3BA5A5A12469DE2` FOREIGN KEY (`category_id`) REFERENCES `category` (`id`);

 /****************************************************************************/
4

2 回答 2

0

如果您在类 XxxxxType extends AbstractType 中遇到 __toString() 错误,您可以在构建器中添加字段定义,如下所示。无需修改您的实体。

$builder
            ->add('enquete','entity',array('class' => 'AdequatSipBundle:Enquete', 
                'property' => 'Id', 'read_only'=>true))
            ->add('produit','entity',array('class' => 'AdequatSipBundle:Produit', 
                'property' => 'Name', 'read_only'=>true))
于 2014-08-07T17:35:30.977 回答
0

如上述评论所述,问题在于我没有在控制器文件中包含 Arraycollection 命名空间。但是在包含命名空间之后,我在添加新产品时遇到了另一个错误。

以下是错误消息:“__toString()”方法未在选择字段的 Main\BlogBu​​ndle\Enity\Category 类型的对象上找到。

对于这个错误,我们需要向您的 Category 实体添加一个 __toString() 方法。例如:

public function __toString() {   return $this->name;  }

PHP 魔术方法 __toString() 用于呈现对象的文本表示。在这种情况下,在相关实体的表单中选择类别时将使用类别名称。

于 2013-10-27T15:46:47.863 回答