ho qualche promblem. ero alla ricerca e provo a suggerire tutti ma nessuno lavora.Doctrine Many to Many Insert
e io alla fine con:
Argument 1 passed to Entity\User::addCategories() must be an instance of Entity\Category, string given,
devo ManyToMany rapporto, utente, user_category, e la categoria
utente
<?php
namespace Entity;
use Doctrine\Common\Collections\ArrayCollection;
use Gedmo\Mapping\Annotation as Gedmo;
use Doctrine\ORM\Mapping as ORM;
/**
* @Entity
* @Table(name="user")
*/
class User
{
/**
* @Id
* @Column(type="integer", nullable=false)
* @GeneratedValue(strategy="AUTO")
*/
public $id;
/**
* @Column(type="string", length=255, unique=true, nullable=false)
*/
public $name;
/**
* @ManyToMany(targetEntity="Entity\Category", inversedBy="user")
* @ORM\JoinTable(name="user_category")
*/
public $categories;
public function __construct() {
$this->category = new \Doctrine\Common\Collections\ArrayCollection();
}
public function getCategories()
{
return $this->categories;
}
public function addCategories(Category $category = null)
{
$this->categories = $category;
}
public function setName($name)
{
$this->name = $name;
}
public function getName()
{
return $this->name;
}
}
categoria
<?php
namespace Entity;
use Doctrine\Common\Collections\ArrayCollection;
use Gedmo\Mapping\Annotation as Gedmo;
use Doctrine\ORM\Mapping as ORM;
/**
* @Entity
* @Table(name="category")
*/
class Category
{
/**
* @Id
* @Column(type="integer", nullable=false)
* @GeneratedValue(strategy="AUTO")
*/
public $id;
/**
* @Column(type="string", length=255, unique=true, nullable=false)
*/
public $name;
/**
* @ManyToMany(targetEntity="Entity\User", mappedBy="category")
*/
public $user;
public function __construct() {
$this->user = new \Doctrine\Common\Collections\ArrayCollection();
}
public function getUser()
{
return $this->user;
}
public function addUser(User $user = null)
{
$user->addCategory($this);
$this->user = $user;
}
public function setName($name)
{
$this->name = $name;
}
public function getName()
{
return $this->name;
}
}
funzione Inserisci
// check existence object in database
$res = $this->em->find('Entity\User', $this->input->post('id'));
if($res){
$data = $this->em->find('Entity\User', $this->input->post('id'));
}else{
// create a new User object
$data = new Entity\User;
}
$data->setName($this->input->post('name'));
$data->addCategories($this->input->post('category'));
// save the data object to the database
$this->em->persist($data);
$this->em->flush();
Tutto va bene su get ma io sono così confondere per il set al lavoro.
grazie per il vostro aiuto. scusa per il mio inglese.
il metodo addCategory si aspetta un oggetto Category, passandogli invece una stringa. non hai postato quella parte del tuo codice, ma il messaggio di errore lo dice bene – DevZer0
così come il modo giusto per aggiornare questo 3 tavolo? o che tipo devo passare a 'addCategory'? ho provato di tutto e continuo ad affrontare l'errore. – dhidy
aggiorno il mio post, vorresti dargli un'occhiata di nuovo. – dhidy