我已经创建了3个模型对象: User.php、Post.php、DataPribadi.php
这是User.php
<?php
namespace App;
use Illuminate\Notifications\Notifiable;
use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Foundation\Auth\User as Authenticatable;
class User extends Authenticatable
{
use Notifiable;
public function posts()
{
return $this->hasMany(Post::class);
}
public function datapribadi()
{
return $this->belongsTo(DataPribadi::class);
}
}
这是Post.php
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Post extends Model
{
protected $dates = ['created_at','updated_at'];
public function user()
{
return $this->belongsTo(User::class);
}
}
这是DataPribadi.php
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class DataPribadi extends Model
{
protected $table = 'datapribadi';
protected $fillable = ['namalengkap','namapanggilan','tempatlahir','tgllahir','jeniskelamin','golongandarah','namaayah','namaibu','avatar','user_id'];
public function getAvatar()
{
if(!$this->Avatar){
return asset('images/default.jpg');
}
return asset('images/'.$this->Avatar);
}
public function user()
{
return $this->belongsTo(User::class);
}
}
这是DataPribadiController.php
<?php
namespace App\Http\Controllers;
use App\Exports\DataPribadiExport;
use Maatwebsite\Excel\Facades\Excel;
use Illuminate\Http\Request;
use App\User;
use PDF;
use App\DataPribadi;
//use App\Http\Requests;
class DataPribadiController extends Controller
{
public function index(Request $request)
{
#ini untuk ambil data yang masuk di variable $request
#dd($request->all());
#untuk search
if($request->has('cari')){
$data_datapribadi = \App\DataPribadi::where('NamaLengkap','LIKE','%'.$request->cari.'%')->get();
}else{
#untuk tampilkan data
$data_datapribadi = \App\DataPribadi::all(); #INI TAMBAHKAN WHERE ISACTIVE = 1
}
return view ('datapribadi.index',['data_datapribadi' => $data_datapribadi]);
}
public function create(Request $request)
{
$this->validate($request,[
'namalengkap' => 'required|min:5',
'namapanggilan' => 'required|min:5',
'email' => 'required|email|unique:users',
'tempatlahir' => 'required',
'tgllahir' => 'required|date_format:Y-m-d',
'golongandarah' => 'required',
'namaayah' => 'required|min:5',
'namaibu' => 'required|min:5',
'avatar' => 'mimes:jpeg,png|dimensions:max_width=400,max_height=400,min_width=100,min_height=100'
]);
#untuk insert user
$user = new \App\User;
$user->role = 'jemaat';
$user->name = $request->namalengkap;
$user->email = $request->email;
$user->password = bcrypt('jemaat');
$user->remember_token = str_random(60);
$user->save();
#untuk insert datapribadi
$request->request->add(['user_id' => $user->id ]);
$datapribadi = \App\DataPribadi::create($request->all());
if($request->hasFile('avatar')){
$request->file('avatar')->move('images',$request->file('avatar')->getClientOriginalName());
$datapribadi->avatar = $request->file('avatar')->getClientOriginalName();
$datapribadi->save();
}
return redirect('/datapribadi')->with('sukses','Data berhasil diinput');
}
public function edit(DataPribadi $datapribadi)
{
#untuk ambil data yang ingin di edit
//$datapribadi = \App\DataPribadi::find($IdPribadi);
return view('datapribadi/edit',['datapribadi'=>$datapribadi]);
}
public function update(Request $request, DataPribadi $datapribadi)
{
$this->validate($request,[
'namalengkap' => 'required|min:5',
'namapanggilan' => 'required|min:5',
'tempatlahir' => 'required',
'tgllahir' => 'required|date_format:Y-m-d',
'golongandarah' => 'required',
'namaayah' => 'required|min:5',
'namaibu' => 'required|min:5',
'avatar' => 'mimes:jpeg,png|dimensions:max_width=400,max_height=400,min_width=100,min_height=100'
]);
//dd($request->all());
#untuk mengupdate data yang ingin di edit
//$datapribadi = \App\DataPribadi::find($id);
$datapribadi->update($request->all());
if($request->hasFile('avatar')){
$request->file('avatar')->move('images',$request->file('avatar')->getClientOriginalName());
$datapribadi->avatar = $request->file('avatar')->getClientOriginalName();
$datapribadi->save();
}
return redirect('/datapribadi')->with('sukses','Data berhasil diupdate');
}
public function delete(DataPribadi $datapribadi)
{
#untuk menghapus data
//$datapribadi = \App\DataPribadi::find($IdPribadi);
$datapribadi->delete($datapribadi);
return redirect('/datapribadi')->with('sukses','Data berhasil dihapus');
}
public function profile(DataPribadi $datapribadi)
{
//$datapribadi = \App\DataPribadi::find($IdPribadi);
$ptingkatpendidikanmaster = \App\TingkatPendidikanMaster::all();
$ppekerjaanmaster = \App\PekerjaanMaster::all();
$phobimaster = \App\HobiMaster::all();
$pperiodekehadiranmaster = \App\PeriodeKehadiranMaster::all();
//dd($tingkatpendidikanmaster);
//Menyiapkan data untuk chart
$categories = [];
$data = [];
foreach($pperiodekehadiranmaster as $pkm){
if($datapribadi->periodekehadiranmaster()->wherePivot('periode_kehadiran_master_id',$pkm->id)->first()){
$categories[]= $pkm->bulantahun;
$data[]= $datapribadi->periodekehadiranmaster()->wherePivot('periode_kehadiran_master_id',$pkm->id)->first()->pivot->jumlah;
}
}
//dd($categories);
//dd($data);
return view('datapribadi.profile',['datapribadi'=>$datapribadi, 'ptingkatpendidikanmaster'=>$ptingkatpendidikanmaster, 'ppekerjaanmaster'=>$ppekerjaanmaster, 'phobimaster'=>$phobimaster, 'pperiodekehadiranmaster'=>$pperiodekehadiranmaster, 'categories' =>$categories, 'data' =>$data]);
}
public function addriwayatpendidikan(Request $request, $iddatapribadi)
{
//dd($request->all());
$datapribadi = \App\DataPribadi::find($iddatapribadi);
if($datapribadi->tingkatpendidikanmaster()->where('tingkat_pendidikan_master_id',$request->tingkatpendidikanmaster)->exists()){
return redirect('datapribadi/'.$iddatapribadi.'/profile')->with('error','Data Riwayat Pendidikan Sudah Pernah Didaftarkan');
}
$datapribadi->tingkatpendidikanmaster()->attach($request->tingkatpendidikanmaster,['tahun' => $request->tahun]);
return redirect('datapribadi/'.$iddatapribadi.'/profile')->with('sukses','Data Riwayat Pendidikan berhasil dimasukkan');
}
public function addpekerjaan(Request $request, $iddatapribadi)
{
//dd($request->all());
$datapribadi = \App\DataPribadi::find($iddatapribadi);
if($datapribadi->pekerjaanmaster()->where('pekerjaan_master_id',$request->pekerjaanmaster)->exists()){
return redirect('datapribadi/'.$iddatapribadi.'/profile')->with('error','Data Pekerjaan Sudah Pernah Didaftarkan');
}
$datapribadi->pekerjaanmaster()->attach($request->pekerjaanmaster,['utamasampingan' => $request->utamasampingan]);
return redirect('datapribadi/'.$iddatapribadi.'/profile')->with('sukses','Data Pekerjaan berhasil dimasukkan');
}
public function addhobi(Request $request,$iddatapribadi)
{
//dd($request->all());
$datapribadi = \App\DataPribadi::find($iddatapribadi);
if($datapribadi->hobimaster()->where('hobi_master_id',$request->hobimaster)->exists()){
return redirect('datapribadi/'.$iddatapribadi.'/profile')->with('error','Data Hobi Sudah Pernah Didaftarkan');
}
$datapribadi->hobimaster()->attach($request->hobimaster,['intensitas' => $request->intensitas]);
return redirect('datapribadi/'.$iddatapribadi.'/profile')->with('sukses','Data Hobi berhasil dimasukkan');
}
public function addperiodekehadiran(Request $request,$iddatapribadi)
{
//dd($request->all());
$datapribadi = \App\DataPribadi::find($iddatapribadi);
if($datapribadi->periodekehadiranmaster()->where('periode_kehadiran_master_id',$request->periodekehadiranmaster)->exists()){
return redirect('datapribadi/'.$iddatapribadi.'/profile')->with('error','Data Kehadiran Sudah Pernah Didaftarkan');
}
$datapribadi->periodekehadiranmaster()->attach($request->periodekehadiranmaster,['jumlah' => $request->jumlah]);
return redirect('datapribadi/'.$iddatapribadi.'/profile')->with('sukses','Data Kehadiran berhasil dimasukkan');
}
public function editjumlah(Request $request, $id)
{
return $request->all();
}
public function deletejumlah($iddatapribadi, $idperiodekehadiran)
{
$datapribadi = \App\DataPribadi::find($iddatapribadi);
$datapribadi->periodekehadiranmaster()->detach($idperiodekehadiran);
return redirect()->back()->with('sukses','Data Jumlah Kehadiran Berhasil Dihapus');
}
public function exportExcel()
{
return Excel::download(new DataPribadiExport, 'Datapribadi.xlsx');
}
public function exportPdf()
{
$datapribadi = \App\DataPribadi::all();
$pdf = PDF::loadView('export.datapribadipdf', ['datapribadi' => $datapribadi]);
//$pdf = PDF::loadHTML('<h1>Data Jemaat</h1>');
return $pdf->download('datapribadi.pdf');
}
}
我尝试使用下面的代码从我的singlepost.blade.php调用它:
<img src="{{$post->user->datapribadi->getAvatar()}}" alt="">
和laravel系统错误:
ErrorException (E_ERROR)
Call to a member function getAvatar() on null
如何解决此错误??提前谢谢..
发布于 2020-07-27 14:12:04
问题出在返回公共函数datapribadi() { User.php $this->hasOne(DataPribadi::class);}它应该是"hasOne“。
https://stackoverflow.com/questions/63112889
复制相似问题