0

&の編集のための1つのメカニズムとの関係に問題があるので、シスワとテレフォンのモデルがあります。テレフォンはシスワに属しています...ここにコードは関係が非オブジェクトのプロパティを取得しようとしている

Siswa.php(モデル)

class Siswa extends Model 
{ 
protected $table = 'siswa'; 

protected $fillable = [ 
    'nisn', 
    'nama_siswa', 
    'tgl_lahir', 
    'jns_klmin' 
]; 

protected $dates = ['tgl_lahir']; 

public function getNamaSiswaAttribute($nama_siswa){ 
    return ucwords($nama_siswa); 
} 

public function setNamaSiswaAttribute($nama_siswa){ 
    $this->attributes['nama_siswa']=ucwords($nama_siswa); 
} 

public function telepon(){ 
    return $this->hasOne('App\Telepon', 'id_siswa'); 
} 
} 

Telepon.php(モデル)

class Telepon extends Model 
{ 
protected $table = 'telepon'; 

protected $primKey = 'id_siswa'; 

protected $fillable = [ 
    'id_siswa', 
    'no_telepon', 
]; 

public function siswa(){ 
    return $this->belongsTo('App\Siswa', 'id_siswa'); 
} 
} 

編集及び更新機能コントローラ以下に示す:

public function edit($id){ 
    $siswa = Siswa::findOrFail($id); 
    $siswa->no_telepon = $siswa->telepon->no_telepon; 
    return view('siswa.edit', compact('siswa')); 
} 

public function update(Request $request, $id){ 
    $siswa = Siswa::findOrFail($id); 
    $input = $request->all(); 

    $validator = Validator::make($input, [ 
     'nisn'=>'required|string|size:4|unique:siswa,nisn,'.$request->input('id'), 
     'nama_siswa'=>'required|string|max:30', 
     'tgl_lahir'=>'required|date', 
     'jns_klmin'=>'required|in:L,P', 
     'no_telepon'=>'sometimes|numeric|digits_between:10,15|unique:telepon,no_telepon,'.$request->input('id').',id_siswa', 
    ]); 

    if ($validator->fails()) { 
     return redirect('siswa/'.$id.'/edit')->withInput()->withErrors($validator); 
    } 

    $siswa->update($request->all()); 

    $telepon = $siswa->telepon; 
    $telepon->no_telepon = $request->input('no_telepon'); 
    $siswa->telepon()->save($telepon); 

    return redirect('siswa'); 
} 

私は非オブジェクトエラー編集機能では、ラインのプロパティを取得しようとするとしまった "$ siswa-> no_telepon = $ siswa-> telepon-> no_teleponを;"。

編集コントローラ内で編集ビューを呼び出すと、その内部に以前に保存されたデータがあるフォームが表示されます。 no_telepon自体はSiswaではなく、Teleponテーブルからの列なので、編集目的で電話で保存されたデータを表示する方法が問題です。 FYI、createはうまく動作し、no_teleponデータはTeleponテーブルに保存されます。だから、これはどうですか?どんな助けもありがたい。

答えて

0

'App\Telepon'がデータベースにありません。'id_siswa'は、テーブルsiswaのレコードのIDを指しているためです。

あなたは、このようにこのエラーをOMMITことができます。残りの部分とは違って...

public function edit($id){ 
    $siswa = Siswa::findOrFail($id); 
    $siswa->no_telepon = $siswa->telepon ? $siswa->telepon->no_telepon : ''; 
    return view('siswa.edit', compact('siswa')); 
} 
+0

ビューの作品を、そしてもちろんteleponフォームは空です。どのようにこのApp \ Teleponを追加するには?私はすでに私のコントローラーbtwにそれを追加して、 –

関連する問題