【问题标题】:Laravel : How to update data in one to one Eloquent relationshipLaravel:如何以一对一的 Eloquent 关系更新数据
【发布时间】:2016-07-22 01:17:56
【问题描述】:

我有两张桌子:

 1. User.
 2. Post.

在发布表中,我保存了用户信息。所以当我点击更新时,它应该加载特定的用户数据。它已加载,但是当我单击保存按钮以更新保存时。它显示以下错误。

PostController.php 第 78 行中的 FatalErrorException:调用未定义 函数 App\Http\Controllers\fill()

我认为我的 postUpdate 控制器有问题。但我找不到问题。

这是我的用户模型:

<?php

namespace App;

use Illuminate\Foundation\Auth\User as Authenticatable;

class User extends Authenticatable
{

    protected $fillable = [
        'name', 'email', 'password',
    ];


    protected $hidden = [
        'password', 'remember_token',
    ];

     public function post()
    {
        return $this->hasOne('App\Post'); //Profile is your profile model
    }
}

这是我的帖子模型:

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Post extends Model
{
      protected $fillable = [
    'first_name', 'middle_name', 'last_name','gender',                            'dob','nationality','nid','email','phone_no','about_me'
];
     public function user()
    {
       return $this->belongsTo('App\User'); //Profile is your profile model
    }
}

这是我的帖子控制器:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Http\Response;
use App\Http\Requests;
use App\Post;
use App\User;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Storage;
use Illuminate\Support\Facades\File;

class PostController extends Controller
{


   public function getDashboard()
   {        
     $posts = Post::all();
          return view('dashboard',['posts'=>$posts]);  
    }


  public function postCreate(Request $request){
    $this->validate($request,[
      'first_name'=> 'required|max:120',
      'middle_name'=> 'required|max:120',
      'last_name' => 'required|max:120',
      'gender'=> 'required',
      'dob'=>'required',
      'nationality'=>'required',
      'nid'=>'required',
      'email' => 'required|email|unique:users',
      'phone_no'=>'required',
      'about_me'=>'required',
        ]);

    $post = new Post();
        $post->first_name = $request['first_name'];
        $post->middle_name = $request['middle_name'];
        $post->last_name = $request['last_name'];
        $post->gender = $request['gender'];
        $post->dob = $request['dob'];
        $post->nationality = $request['nationality'];
        $post->nid = $request['nid'];
        $post->email = $request['email'];
        $post->phone_no = $request['phone_no'];
        $post->about_me = $request['about_me'];        
        $message='There was an Error';
        if( $request->user()->post()->save($post)){
          $message = "Profile Created successfully";
        }
        return redirect()->route('dashboard')->with(['message' => $message]);

  }


    public function postUpdate(Request $request)
    {
          $this->validate($request,[
            'first_name'=> 'required|max:120',
            'middle_name'=> 'required|max:120',
            'last_name' => 'required|max:120',
            'gender'=> 'required',
            'dob'=>'required',
            'nationality'=>'required',
            'nid'=>'required',
            'email' => 'required|email|unique:users',
            'phone_no'=>'required',
            'about_me'=>'required',
            ]);


        $request->user()->post()->update(fill($request->all())) ;  

        return redirect()->route('dashboard');
       }



}

【问题讨论】:

    标签: php laravel controller laravel-5.2


    【解决方案1】:

    在这里,您将获得一系列帖子:

    $data=Post::all();
    

    但是你需要传递一个数组。尝试将其替换为:

    $data = $request->only('first_name', 'middle_name', 'last_name', 'gender', 'dob', 'nationality', 'nid', 'email', 'phone_no', 'about_me');
    

    【讨论】:

      猜你喜欢
      • 2015-04-12
      • 1970-01-01
      • 1970-01-01
      • 2015-03-24
      • 2018-09-26
      • 2013-02-09
      • 2021-04-21
      • 1970-01-01
      • 2017-04-20
      相关资源
      最近更新 更多