私は最終的にデータモデルに入りたいと思っています。しかし、私は私の頭を包み込むことができない1つのことがあります、そして、私はこれがあまりにも馬鹿に聞こえないことを願っています:リレーショナルモデルオブジェクトの闘争
どのようにオブジェクトのIDを設定する? オブジェクトを作成するときに、(マッパークラスによって)このオブジェクトがデータベースに挿入されたときにどのIDを持つかを知る方法がありません。だから私はまだIDを知っていない場合、リレーショナルオブジェクトを永続化することはできますか?
私が例でこれを説明しようとします。私のcolor
オブジェクトはまだIDを持っていないよう
class product {
private $id; // ??
private $name;
private $color;
function __construct($name, color $color){
$this->name = $name;
$this->color = $color;
}
function getName(){
return $this->name;
}
function getColor(){
return $this->color;
}
function setId(){
$this->id = $id;
}
}
class color {
private $id; // ??
private $hexCode;
function __construct($hexCode){
$this->hexCode = $hexCode;
}
function getId(){
return $this->id;
}
}
class productMapper{
function persist(product $product){
// persist query
$someQueryBuilder->insert('products')->set('name',$product->getName())->set('refColor',$product->getColor()->getId());
$product->setId($someQueryBuilder->getInsertId());
}
}
$color = new color('FFCC00');
$product = new product('table', $color);
$productMapper = new productMapper();
$productMapper->persist($product);
は、だからここに私の問題は、私は私のproduct
オブジェクトを永続化することはできません。 これを行う正しい方法は何ですか? ここで私のアプローチは間違っていますか?
私を助けてくれたり、正しい方向に向いてくれてありがとう。