Laravel 5使用雄辩的模型从数据库中获取数据

时间:2016-06-01 10:04:02

标签: php laravel eloquent

我写了一个像::

这样的成员函数
public function details($article_seo){
        $articleDet = Articles::where(function($query) {
            $query->where('article-seo', '=', $article_seo);
            })
        ->get();
        dd($articleDet);
    }

并在laravel controller ::

的开头使用了这些
namespace App\Http\Controllers;

use Illuminate\Http\Request;

use App\Http\Requests;
use App\articles;  /** this is the eloquent model **/

问题是:: 当我试图通过网址数据传递我收到的$article_seo时,它让我对::: Undefined variable: article_seo

感到惊讶

成为Laravel的新手我已经检查了很多方法但无法找到。请帮助!!!!

2 个答案:

答案 0 :(得分:2)

如果要在闭包内使用外部变量,可以使用use关键字将变量传递到闭包中。

public function details($article_seo){
        $articleDet = Articles::where(function($query) use ($article_seo) {
            $query->where('article-seo', '=', $article_seo);
            })
        ->get();
        dd($articleDet);
    }

您可以轻松地将文章与您的文章匹配。

    public function details($article_seo){
        $articleDet = Articles::where('article-seo', '=', $article_seo)
        ->get();
        dd($articleDet);
    }

答案 1 :(得分:0)

此处不需要关闭,您可以简单地使用模型来找到您正在寻找的方法。

$details = Articles::where('article-seo', '=', $article_seo)->get();

稍微清理一下,默认情况下where表达式将使用等号,所以我们可以省略它。

$details = Articles::where('article-seo', $article_seo)->get();

如果您的数据库值是蛇形的(article_seo而不是article-seo),那么您可以更简化该表达式

$details = Articles::whereArticleSeo($article_seo)->get();

这比原始的基于闭包的方法更容易阅读!