私がしたいのは、 TableB のフィールドbook_idのすべてのレコードをTableA book_idと等しくなるように更新することです。しかし、正確には 7862 件中 19件という、いくつかのレコードのみを更新します。
結果として19回のレコード更新が最終的に7862に達することを期待して、これを何度も行いましたが、戸惑うことにはまだ19です.
TableA:
book_id
ibooks_id -> equal to TableB.book_id
TableB:
book_id -> change to TableA.book_id
私が試したコード:
$books = TableAModel::join("TableB", "TableA.ibooks_id", '=', "TableB.book_id")
->update(array("TableB.book_id" => "TableA.book_id"));
また:
$tableBItems = TableBModel::all();
TableBModel::unguard();
foreach($tableBItems as $tableBitem) {
$TableAItem = TableAModel::where('ibooks_id',$tableBitem->book_id)->first();
if(isset($TableAItem->book_id)) {
$tableBitem->book_id = $TableAItem->book_id;
$tableBitem->save();
}
}
これに対するより良いアプローチはありますか?または、これは純粋な mysql query を介して行うことができます、ありがとう。
モデル:
class TableBModel extends Eloquent {
public $table = 'TableB';
public $timestamps = false;
}
class TableAModel extends Eloquent {
protected $table = 'TableA';
public $primaryKey = 'book_id';
}