leo
leo

Reputation: 119

Trying to get property of non-object in laravel 5.2

this is my posts table

    <?php
    use Illuminate\Database\Schema\Blueprint;
    use Illuminate\Database\Migrations\Migration;
    class CreatePostsTable extends Migration
    {

    public function up()
    {
        Schema::create('posts', function (Blueprint $table) {
            $table->increments('id');

            $table->integer('user_id')->unsigned();
            $table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');

            $table->integer('prf_id')->unsigned();
            $table->foreign('prf_id')->references('id')->on('profiles')->onDelete('cascade');

            $table->longText('status');
            $table->timestamps();
        });
    }


    public function down()
    {
        Schema::drop('posts');
    }
}

this my Post model:

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Post extends Model
{
    protected $table='posts';
    protected $fillable = ['status'];


    protected $hidden = [];

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

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


}

this is profile model

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Profile extends Model
{
    protected $table='profiles';

    protected $fillable = ['user_id','name','position','roles','username','college','phone','location','graduation','skill'];


    protected $hidden = [];

     public function posts(){
        return $this->hasMany('App\Post');
    }

}

this is User model

<?php

namespace App;

use Illuminate\Foundation\Auth\User as Authenticatable;

class User extends Authenticatable
{

    protected $fillable = [
        'fname','lname', 'email','sex', 'password','user_id','roles'
    ];

    /**
     * The attributes that should be hidden for arrays.
     *
     * @var array
     */
    protected $hidden = [
        'password', 'remember_token',
    ];


     public function posts(){
        return $this->hasMany('App\Post');
    }

}

when i try {{$status->user->fname}} this.its show the correct value but when i try {{$status->profile->username}} this ,every time it shows me Trying to get property of non-object (View: C:\xampp\htdocs\abc\resources\views\pages\profile.blade.php) i really don't know why :(

Upvotes: 1

Views: 326

Answers (1)

Amit Gupta
Amit Gupta

Reputation: 17688

In your Post class try the following code:

public function profile(){
    return $this->belongsTo('App\Profile', 'prf_id');
}

Upvotes: 1

Related Questions