laravel ::在课堂上找不到

时间:2015-10-14 09:30:38

标签: php laravel

我在数据库中有一些文章,我试图通过搜索其标题找到一个特定的文章。这是我的控制器。

public function showArticle($title)
{
   $article = Article::find($title);

   return view('article.show', compact('article'));

}

这是我在phpStorm中遇到的错误:在App / Article类中找不到方法“findOrFail”。

这是我的模特:

    <?php

    namespace App;

    use Illuminate\Database\Eloquent\Model;



    class Article extends Model
    {
       protected $fillable =
       [
        'title',
        'description',
        'published_at'
       ];
    }

这是我的观点,我试图展示文章的标题和描述。

    @extends('layouts.master')

    @section('title', 'All articles')

    @section('content')



    <h1>{{$article->title}}</h1>


    <article>

        {{$article->description}}

    </article>

   @stop

当我尝试加载视图时,出现以下错误:

尝试获取非对象的属性(查看:/var/www/resources/views/article/show.blade.php)

3 个答案:

答案 0 :(得分:3)

find()方法不适用于您想要的任何属性。您必须传递文章的ID才能实现这一点。通过标题而不是id来查找文章要慢得多。 但如果你真的想这样做,你可以写下这样的东西:

$article = Article::where('title', $title)->first();

然后在您看来,执行以下操作:

    @extends('layouts.master')

@section('title', 'All articles')

@section('content')

@if($article)

<h1>{{$article->title}}</h1>


<article>

    {{$article->description}}

</article>

@else
    Article not found
@endif

@stop

查看文档以获取进一步参考: http://laravel.com/docs/5.1/eloquent#retrieving-single-models

答案 1 :(得分:0)

1。查找具有特定标题

的文章
Article::where('title', '=', $title)

方法find()正在查找Model类中定义的主键(默认为id列)。

2。 compact()函数

View会抛出错误,因为您发送的数组要查看,而不是对象。

  

(PHP 4,PHP 5,PHP 7)

     

compact - 创建包含变量及其值的数组

然后在Controller更改compact('article')$article或将刀片文件中的语法更改为数组($article['description'])。

答案 2 :(得分:0)

尝试

$article = Article::all()->find($title);

Laravel 5.3