سؤال

أقوم بتحديث على إطاري. في السابق ، أستخدم ZF1 Zend DB حدد فئة كائن الوصول إلى البيانات. الآن ، أود إجراء تحول وترقية إلى ZF2. لدي مشاكل في ترجمة الإدراج وتحديثها وتحديدها وحذفها وأتساءل عما إذا كان بإمكان شخص ما إلقاء بعض الضوء لمساعدتي.

  • ما هي الفصول الجديدة التي يجب أن أستخدمها؟
  • هل ينطوي على الكثير من إعادة الترميز؟
  • أي مراجع ستساعد كثيرًا (تم النظر من خلال StackOverflow ، لكن Haven وجد دليلًا شاملاً)

أدناه هو رمز الخاص بي لإدراج/تحديث/حذف/حدد ZF1

إدراج

$userdata = array('email' => $email,
    'name' => $name,
    'gender' => $gender,
    'location' => $location,
    'fbid' => $fbid,
    'ipaddress' => $ipaddress,
    'jointimestamp'=>new Zend_Db_Expr('NOW()'));      
$this->dbo->insert('users', $userdata);
return $this->dbo->lastInsertId();

يختار

if($this->dbo->fetchOne('SELECT id FROM users WHERE username = ?',$username)){
    return true;
}else{
    return false;
}

تحديث

$userdata = array($field => $value);
$this->dbo->update('user', $userdata, $this->dbo->quoteInto('useremail = ?', $this->user));

أيضًا ، هل لدى ZF2 أساليب petchall و fetchone و fetchrow وما إلى ذلك؟

نقدر أي نصائح.

هل كانت مفيدة؟

المحلول

بعد قراءة الوثائق ، خرجت مع استعلامات إدراج/تحديد/تحديث لـ ZF2. فيما يلي مقتطف الكود لصالح أولئك الذين قد يحتاجون إليه في المستقبل. أنا أستخدم Zend DB SELECT كطبقات مستقلة لإطار عمل MVC المخصص الخاص بي.

مشترك كهربائي

$adapter = new Zend\Db\Adapter\Adapter(array(
            'driver'   => 'pdo_mysql',
            'host' => DB_HOST,
            'database' => DB_PREFIX.DB_NAME,
            'username' => DB_USER,
            'password' => DB_PW
));

يختار

$select = $this->sql->select()
            ->from('table')
            ->join('users', 'users.id = table.userid')
            ->order("table.createdtimestamp DESC");
$statement = $this->sql->prepareStatementForSqlObject($select);
$result =  $statement->execute();
$resultSet = new ResultSet();
$resultSet->initialize($result);
return $resultSet->toArray();

إدراج

$insert = $this->sql->insert()
        ->into("messages");
$userdata = array(
         'message' => $message,
         'createdtimestamp'=>new Zend\Db\Sql\Expression('NOW()'),
         'userid' => $userid);    
$insert->values($userdata );    
$statement = $this->sql->prepareStatementForSqlObject($insert);
$result =  $statement->execute();
//return last insert id
return $this->dbo->getDriver()->getLastGeneratedValue();

تحديث

$update = $this->sql->update()
        ->table('posts')
        ->where(array('pid'=>$pid));
$numbercountarr = array('numbercount' =>  new Zend\Db\Sql\Expression('numbercount+ 1'));
$update->set($numbercountarr );
$statement = $this->sql->prepareStatementForSqlObject($update);
result =  $statement->execute();

لحساب الصفوف

$statement = $this->sql->prepareStatementForSqlObject($query);
$result =  $statement->execute();
return $result->count();

آمل أن يساعد هذا أولئك الذين يحتاجون إليها في توفير بعض الوقت.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top