Laravel 尝试获取非对象的属性 'project_name'。

10 浏览
0 Comments

Laravel 尝试获取非对象的属性 'project_name'。

我对Laravel还很新,只是想指出一下。我在读取我的展示页面时遇到了问题,当我打开展示页面(show.blade.php)时,返回了以下错误:

试图获取非对象的属性'project_name'(视图:C:\Server\data\htdocs\ProjectCMS\resources\views\project\show.blade.php)。

我不知道我做错了什么,因为我已经让它起作用了,但是一旦我再次打开展示页面,就会返回这个错误。

任何帮助将不胜感激!

ProjectController.php:

public function show($id)
{
    $user_id = auth()->user()->id;
    $project = Project::where('user_id', $user_id)->first();
    $projectitem = Projectitem::where('project_id', $id)->first();
    return view('project.show', [
        'project'     => $project,
        'projectitem' => $projectitem,
    ]);
}

web.php路由

Route::get('/projects/{id}', 'ProjectController@show');

show.blade.php:

@extends('layouts.app')
@section('content')
                

{{$projectitem->project_name}}

Beschrijving:

{!!$projectitem->description!!}

Tijdsduur(in uren): {{$projectitem->time_span}} Uren

Opdrachtgever:  {{$projectitem->client}}

Text verslag:

{!!$projectitem->text_report!!}

Foto's vooraf:  

{!!$projectitem->images_before!!}

Foto's achteraf:  

{!!$projectitem->images_after!!}

Beschikbaar op:  

Facebook: facebook == 1){echo "wel";}else{echo "niet";}?>

Instagram: instagram == 1){echo "wel";}else{echo "niet";}?>

Linkedin: linkedin == 1){echo "wel";}else{echo "niet";}?>

Website: website == 1){echo "wel";}else{echo "niet";}?>

Aangemaakt door: {{$projectitem->created_by}}

Aangemaakt op: {{$projectitem->created_at}}

Laatst gewijzigd op: {{$projectitem->updated_at}}

@endsection

Projectitem.php(模型)

namespace App;
use Illuminate\Database\Eloquent\Model;
class Projectitem extends Model
{
    protected $table = "project_item";
    function project(){
        return $this->belongsTo('App\Project');
    }
}

Project.php(模型)

hasMany('App\Projectitem');
    }
}

migration projectitem表

 public function up()
{
    Schema::create('project_item', function (Blueprint $table) {
        $table->bigIncrements('id');
        $table->string('project_name');
        $table->string('client');
        $table->text('description');
        $table->float('time_span');
        $table->text('text_report');
        $table->text('images_before');
        $table->text('images_after');
        $table->boolean('facebook');
        $table->boolean('instagram');
        $table->boolean('linkedin');
        $table->boolean('website');
        $table->integer('belongs_to');
        $table->string('created_by');
        $table->timestamps();
    });
}

0
0 Comments

问题出现的原因是尝试获取一个非对象的属性。解决方法是使用`findOrFail()`或`firstOrFail()`进行更好的检查。代码示例:

$project = Project::where('user_id', $user_id)->firstOrFail();
$projectitem = Projectitem::where('project_id', $id)->firstOrFail();

可以使用如下代码进行进一步检查:

if (!is_null($project)) {
    // View
} else {
    // Do something
}

参考链接:[What is the difference between find(), findOrFail(), first(), firstOrFail(), get(), list(), toArray()](https://stackoverflow.com/questions/33027047)

0
0 Comments

在Laravel中出现了一个错误"trying to get property 'project_name' of non-object",出现这个错误的原因是在blade模板中的代码中使用了错误的语法。具体来说,错误的代码是`$projectitem[' project_name'];`。这段代码试图获取`$projectitem`对象的`project_name`属性,但是由于代码中的空格导致了语法错误。

为了解决这个问题,我们需要将代码修改为正确的语法。首先,如果出现"undefined index"的错误,我们可以在获取属性之前先确定索引的位置,例如`$projectitem[0]['project_name'];`。这样做可以确保我们在获取属性时不会遇到索引不存在的问题。

此外,我们还需要注意到代码中的空格错误。在获取属性时,应该去掉属性名前后的空格,正确的写法应该是`$projectitem['project_name'];`。

要解决这个问题,我们需要修复代码中的语法错误和空格错误。具体来说,我们应该使用正确的语法`$projectitem['project_name'];`来获取`$projectitem`对象的`project_name`属性。这样就能够避免出现"trying to get property 'project_name' of non-object"的错误。

0
0 Comments

Laravel尝试获取非对象的属性'project_name'的问题可能是由于以下原因导致的:在数据库中没有Projectitem模型的记录,这意味着没有找到符合您指定的条件的结果。

要解决这个问题,您可以进行以下操作:

1. 确保数据库中存在Projectitem模型的记录。

2. 检查您的查询条件是否正确,确保它们与数据库中的记录匹配。

3. 如果您使用的是关联模型,确保关联关系正确设置,并且相关模型也存在相应的记录。

4. 确认您的数据库连接是否正确配置,并且数据库服务器正在运行。

通过检查数据库记录的存在性、查询条件的准确性以及相关模型和数据库连接的配置,您可以解决Laravel尝试获取非对象的属性'project_name'的问题。

0