Laravel save() 一对多。插入 <column> 而不是 <column_id>。

Laravel save() one to many. Inserts to <column> instead of <column_id>.

当我尝试保存新对象时,出现此错误:

SQLSTATE[42S22]:未找到列:1054 'field list' 中的未知列 'epigrafe'(SQL:插入 articulotitulo, epigrafe, revista, updated_at, created_at) 值 (Nuevo, 1, 1, 2016-04-11 08:23:32, 2016-04 -11 08:23:32))

插入内容应该在 epigrafe_id(也就是 revista_id)上。

型号:

命名空间应用;

使用Illuminate\Database\Eloquent\Model;

class Articulo extends Model
{
 /**
 * Model table
 *
 */
public $table = "articulo";

protected $fillable = [
    'titulo',
];

public function revista()
{
    return $this->belongsTo('App\Revista');
}

public function autores()
{
    return $this->belongsToMany('App\Autor');
}

public function epigrafe()
{
    return $this->belongsTo('App\Epigrafe');
}

}

控制器:

public function store(Request $request)
{
    $this->validate($request, [
            'titulo' => 'required|max:100',
            'revista' => 'required',
            'epigrafe' => 'required',
        ]);


    $data = $request->all();

    $articulo = new Articulo;
    $articulo->titulo = $request->titulo;
    $articulo->epigrafe = $request->epigrafe;
    $articulo->revista = $request->revista;

    $articulo->save();

    $articulo->autores()->articulos()->attach($articulo->id);
    $articulo->autores()->attach($request->autor);

    Session::flash('message', 'Articulo creado satisfactoriamente!');
    return redirect()->to('articulo');
}

将您的代码更改为正确的列名。

$articulo->epigrafe_id = $request->epigrafe;
$articulo->revista_id = $request->revista;