9

Hei, I already searched many answers out there but could not solve this problem.

Here is the code for my migration

<?php

use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class CreateActiveTable extends Migration {

    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('activations', function($table)
        {
            $table->bigInteger('id')->primary();
            $table->tinyInteger('token');
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::drop('activations');
    }
}

For model (models/Activation.php)

<?php

class Activation extends Eloquent {

    /**
     * The database table used by the model.
     *
     * @var string
     */
    protected $table = 'activations';
    protected $guarded = array();
}

And i am calling Activation table like this.

Activation::create(['id' => 2, 'token' => 1231]);

Seriously i have no idea what's wrong here. And i am newbie at laravel 4. Hope somebody with teach me whats happening and how to solve it.

1

1 Answer 1

22

You need to use the $fillable property in your Activation class when you use Mass Assignment.

class Activation extends Eloquent {

    /**
     * The database table used by the model.
     *
     * @var string
     */
    protected $table = 'activations';

    protected $fillable = ['id', 'token'];
}
Sign up to request clarification or add additional context in comments.

4 Comments

Try removing $guarded line. Do you really want to manually assign id?
is there any reason to make a auto incremented id? while all i need is to enter a id of my own, I tried
This is common in linking tables. Other than that it avoids to enforce data integrity in the application side. In your case Activation should have an auto-incremented id and something like member_id which you can relate to a Client model with Eloquent.
I meant Member model.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.