2011-12-11 14 views
0
// Includes rb.php here etc. 
$mail_type = array('gmail.com', 'yahoo.com', 'yandex.ru', 'hotmail.com', 'live.no'); 

for ($i = 0; $i < 100; $i++) 
{ 
    $mail = R::dispense('emails'); 
    $mail->id = $i; 

    // Create random email 
    $mail->email = strtolower(substr(base64_encode(mt_rand(99, 99999)), 0, -2)).'@'.$mail_type[mt_rand(0, 4)]; 

    R::store($mail); 
    unset($mail); // This doesn't work either 
} 

RedBeanPHPで100個のランダムに作成された電子メールを挿入しようとしています。何らかの理由で、最後のオブジェクトだけがデータベースに挿入され、効果的に最後のオブジェクトが置き換えられるので、これを機能させることはできません。それに関する文書も見つかりません。何か案は?RedBeanPHPでFORループを使用する

答えて

3

RedBeanPHPは、IDを設定してからすでに格納されていると考えています。解決策は、$ mail-> id = $ idフィールドを削除することです。

+0

それは理にかなっています。 'R :: store'は、IDが指定されていない場合にのみ、新しい自動増分行を挿入します。ありがとう。 – Seralize

+0

自動インクリメントのプライマリインデックスに特定の値を強制することは、競合状態の問題を要求することです(http://stackoverflow.com/questions/5101487/possible-to-manually-set-id-of-newrowsも参照してください)。 -with-redbean-php) – dvb

0

$メールは電子メールでインスタンス化されていてもRには格納されていないと言っていますか?私はRが何であるかはわかりませんが、オブジェクトの配列があれば私はさらに拡大できます。お返事を待って。

+0

'R ::'は、** RedBeanPHP ORM **への静的な参照です。 'R :: Store'は' $ mail'変数に格納されているオブジェクトをデータベースに保存します。 – Seralize

+0

あなたの説明からあなたのコードはよく見えると思います。 forループの結果をデータベースに出力する前に印刷してみましたか?あなたが望むものが返ってきたら、問題はデータベースまたはRオブジェクトにあります。 –

関連する問題