Колонки FK не сохранены, Laravel - PullRequest
0 голосов
/ 24 февраля 2020

Я пытаюсь вставить немного FK в дБ, но значение для этого столбца равно нулю. Я пытался использовать create (), но там я получил несколько значений, как ноль, не знаю, почему.

// Here I store value in LkpLocation if value is not in db
$lkp_location = new LkpLocation();

if(!is_null($request->lkp_location_text)){
    $exists = false;

    if($lkp_location->where('text', 'ILIKE', $request->lkp_location_text)->count() > 0){
        $exists = true;
    }
    if ($exists) {
        $lkp_location_id = $lkp_location->where('text', 'ILIKE', $request->lkp_location_text)->pluck('id')[0];
    }else{
        $lkp_location->fill([
            'text' => $request->lkp_location_text,
        ])->save();
        $lastInsertedId = $lkp_location->id;
        $lkp_location_id = $lastInsertedId;
    }
}
dump($lkp_location_id); // here I have the last ID

// Here I store values in Person table
$person = new Person();
$person->fill([
    //columns
    'lkp_location_id' => $lkp_location_id,
    //columns
]);

1 Ответ

1 голос
/ 24 февраля 2020

Все модели Eloquent по умолчанию защищают от массового назначения . Перед использованием методов create или fill вам необходимо указать атрибут fillable или guarded в ваших моделях:

use Illuminate\Database\Eloquent\Model;

class LkpLocation extends Model
{
    /**
     * The attributes that are mass assignable.
     *
     * @var array
     */
    protected $fillable = [
        'text',
        //list other fillable columns here
    ];
}
class Person extends Model
{
    /**
     * The attributes that are mass assignable.
     *
     * @var array
     */
    protected $fillable = [
        'lkp_location_id',
        //list other fillable columns here
    ];
}
...