私は2つのテーブルを持っています:
use Illuminate\Database\Migrations\Migration;
class CreateTransactionsTable extends Migration {
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('transactions', function($table) {
$table->increments('id');
$table->bigInteger('amount');
$table->integer('from');
$table->integer('to');
$table->integer('type');
$table->timestamps();
});
Schema::create('transaction_types', function($table) {
$table->increments('id');
$table->string('name');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('transactions');
Schema::dropIfExists('transaction_types');
}
}
_
// app/models/Transactiones.php
class Transaction extends Eloquent {
public function type()
{
return $this->belongsTo('TransactionType');
}
}
_
// app/models/TransactionTypes.php
class TransactionType extends Eloquent {
public function Transactions()
{
return $this->hasMany('Transaction', 'type');
}
}
transaction_types に (1, 'deposit') をシードしました。今、トランザクションを作成しており、type の FK を transaction_types の ID に設定したいと考えています。
(以下のコードは動作しません..)
if (0 == Transaction::where('from', $tmpData->refID)->count()) {
$t = new Transaction();
$t->amount = $tmpData->amount;
$t->from = $tmpData->refID;
$t->to = $tmpData->ownerID1;
// fails
$t->type = TransactionType::find(1); // desposit
// fails
//$t->types()->insert(TransactionType::find(1)); // desposit
// If it I do it this way it DOES work, but this seems backwards
//TransactionType::find(1)->Transactions()->save($t);
$t->save();
}
私は何を間違っていますか?これは単純なルックアップ テーブルなので、完了したら、単純に $transaction->type()->name を実行して名前を表示できます。
また、私は非常に新しい Laravel であるため、より良いコードに関する提案は大歓迎です。