2012-03-03 7 views
6

私はこのようなエントリをDOctrineで作成します。私はページにバスケットを追加しようとしています。 これは私のエンティティである: 私のエンティティ:Doctrine 2 - 永続エラー - 警告:spl_object_hash()は、パラメータ1がオブジェクトであると想定しています。

<?php 

namespace App\Entity; 
use Doctrine\Common\Collections\ArrayCollection; 
/** 
* @Entity(repositoryClass="App\Repository\Page") 
* @Table(name="page") 

*/ 
class Page 
{ 
    /** 
    * @Id @Column(type="integer", name="p_id") 
    * @GeneratedValue 
    */ 
    private $p_id; 
    /** @Column(type="string", name="p_title") */ 
    private $p_title; 
    /** @Column(type="datetime", name="p_created") */ 
    private $p_created_at; 
    /** @Column(type="datetime", name="p_updated_at") */ 
    private $p_updated_at; 
    /** @Column(type="text", name="p_abstract") */ 
    private $p_abstract; 
    /** @Column(type="text", name="p_fulltext", nullable=false) */ 
    private $p_fulltext; 
    /** @Column(type="string", name="p_author", nullable=true) */ 
    private $p_author; 
    /** @Column(type="string", name="p_url",nullable=true) */ 
    private $p_url; 
    /** @Column(type="string", name="p_meta_title",nullable=true) */ 
    private $p_meta_title; 
    /** @Column(type="string", name="p_meta_keywords",nullable=true) */ 
    private $p_meta_keywords; 
    /** @Column(type="string", name="p_meta_description",nullable=true) */ 
    private $p_meta_description; 
     /** @Column(type="string", name="p_status") */ 
    private $p_status; 
    /** @Column(type="string", name="p_weight") */ 
    private $p_weight; 
    /** 
    * @ManyToOne(targetEntity="User", inversedBy="pages") 
    * @JoinColumn(name="p_u_id", referencedColumnName="u_id") 
    */ 
    private $user; 

    /** 
    * @OneToMany(targetEntity="App\Entity\Page\Basket", mappedBy="page", cascade={"persist", "remove"}) 
    */ 
    protected $pageBaskets; 


    public function __construct() 
    { 
     $this->pageBaskets = new ArrayCollection(); 
     $this->pageMedia = new ArrayCollection(); 
    } 
    public function __get($property) 
    { 
     return $this->property; 
    } 
    public function __set($property,$value) 
    { 
     $this->$property = $value; 
    } 
    public function getPageMedia() 
    { 
     return $this->pageMedia; 
    } 
    public function setUser(\App\Entity\User $user) 
    { 
     $this->user = $user; 
    } 
    public function getMedias() 
    { 
     return $this->pageMedia; 
    } 
    public function getPageBaskets() 
    { 
     return $this->pageBaskets; 
    } 
    /** 
    * Set Page Values 
    * @var array $values 
    */ 
    public function setPageProperties(array $values) 
    { 
     $this->p_updated_at = new \DateTime("now"); 
     $this->p_title = $values['p_title']; 
     $this->p_abstract = $values['p_abstract']; 
     $this->p_meta_title = $values['p_meta_title']; 
     $this->p_meta_keywords = $values['p_meta_keywords']; 
     $this->p_meta_description = $values['p_meta_description']; 
     $this->p_url = $values['p_url']; 
     $this->p_fulltext = $values['p_abstract']; 
     $this->p_author = ''; 
     $this->p_status = 1; 

    } 
    public function getSimpleValues() 
    { 
     return array(
      'p_updated_at' => $this->p_updated_at, 
      'p_title' => $this->p_title, 
      'p_abstract' => $this->p_abstract, 
      'p_meta_title' => $this->p_meta_title, 
      'p_meta_keywords' => $this->p_meta_keywords, 
      'p_meta_description' => $this->p_meta_description, 
      'p_url' => $this->p_url, 
      'p_fulltext' => $this->p_fulltext, 
      'p_author' => $this->p_author 
     ); 
    } 
} 

?> 


<?php 
namespace App\Entity\Page; 
use Doctrine\Common\Collections\ArrayCollection; 

/** 
* @Entity 
* @Table(name="page_basket") 

*/ 
class Basket 
{ 
    /** 
    * @Id @Column(type="integer", name="pb_id") 
    * @GeneratedValue 
    */ 
    private $pb_id; 
    /** 
    * @ManyToOne(targetEntity="Entity\Page",) 
    * @JoinColumn(name="pb_id", referencedColumnName="p_id") 
    */ 
    private $page; 


    public function __construct() 
    { 

    } 
    public function __get($property) 
    { 
     return $this->property; 
    } 
    public function __set($property,$value) 
    { 
     $this->$property = $value; 
    } 
    public function setPage($page) 
    { 
     $this->page = $oszpage; 
    } 
} 

?> 

しかし、そのようなものをやっている:

$page->getPageBaskets()->add($basket); 

Imが取得: 警告:spl_object_hash()はnull

与えられ、パラメータ1が対象であることを期待

私は間違っていますか?

+0

私は既に同じ問題を抱えていることを除いて、同じ問題を抱えています(http://stackoverflow.com/questions/21780016/spl-object-hash-expects-parameter-1-to-be-object-null-given)。メインエンティティを取得しようとするとエラーが発生します。あなたの問題の解決策を見つけましたか? –

答えて

1

快適になるまで、マニュアルの例に従うことをお勧めします。魔法を落とす_ get/_setメソッド。 D2はメソッドコールを傍受してそれを行うことに依存しています。配列コレクションを配列として扱い、エンティティとやりとりするための特定のメソッドを構築します。具体的に

public function addPageBasket($pageBasket) 
{ 
    $this->pageBaskets[] = $pageBasket; 
} 
... 
$page->addPageBasket($pageBasket); 

PS。あなたの特定の質問のために、おそらく$バスケットはオブジェクトではありません。

+1

これは私にとってはうまくいかず、私は魔法のgetとsetメソッドを使っていません。私はまだ同じエラーが発生します –

関連する問題