尝试在表单提交Laravel上存储相关模型中的新对象时出错

时间:2017-07-07 19:59:17

标签: php laravel

我有这个错误,我试图修复没有运气:(这是错误 致电undefined method Illuminate\Database\Query\Builder::encuesta()

刚刚插入Integrante, 图像正常工作没有错误

这是我在integrante model

上的关系
public function integrantes()
{
    return $this->belongsTo(Encuesta::class);
}

这是image model

上的图像关系
public function encuesta() 
    {
        return $this->belongsTo(Encuesta::class);
    }

这是我在encuestas model

上的关系
public function integrantes()
{
  return $this->hasMany(Integrante::class, 'encuesta_id');
}

这是我在我的控制器上的功能动作

public function store(EncuestaRequest $request){

    // Image Upload
    $file = $request->file('image');
    $file_count = count($file);
    $fileupload = 0; 
    $name = 'imagen_' . time() . '.' . $file->getClientOriginalExtension();
    $path = public_path() . '/uploads';
    $file->move($path, $name);

    $encuestas = new Encuesta($request->all());
    $encuestas->save();
    // Saving Integrante
    $integrantes = new Integrante();
    $integrantes->nombres = $request->nombres;
    $integrantes->curp = $request->curp;
    $integrantes->parentesco = $request->parentesco;
    $integrantes->fecha_nacimiento = $request->fecha_nacimiento;
    $integrantes->genero = $request->genero;
    $integrantes->estado_nacimiento = $request->estado_nacimiento;
    $integrantes->encuesta()->associate($encuestas);
    $integrantes->save();

    // Saving Image   
    $image = new Image();
    $image->name = $name;
    $image->encuesta()->associate($encuestas);
    $image->save();


    return redirect('encuesta');
}

1 个答案:

答案 0 :(得分:1)

更改您的Integrante模型,

自:

public function integrantes()
{
    return $this->belongsTo(Encuesta::class);
}

要:

public function encuesta()
{
    return $this->belongsTo(Encuesta::class);
}

在下面的行中,您尝试从Integrante模型调用encuesta()方法,但在模型中使用了错误的函数名称(integrantes())。所以,这就是为什么你得到未定义的方法错误。

$integrantes->encuesta()->associate($encuestas);