Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/267.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel数据库查询_Php_Laravel_Laravel 4 - Fatal编程技术网

Php Laravel数据库查询

Php Laravel数据库查询,php,laravel,laravel-4,Php,Laravel,Laravel 4,我正在laravel4中构建我的第一个db查询,但是我遇到了一些问题 我的目标是在用户登录后向他们显示站点警报。我得到一个错误,上面写着:“尝试获取非对象的属性” 我的模型: class SiteAlert extends Eloquent { /** * The database table used by the model. * * @var string */ protected $table = 'sitealerts'; public function scopege

我正在laravel4中构建我的第一个db查询,但是我遇到了一些问题

我的目标是在用户登录后向他们显示站点警报。我得到一个错误,上面写着:“尝试获取非对象的属性”

我的模型:

class SiteAlert extends Eloquent  {

/**
 * The database table used by the model.
 *
 * @var string
 */
protected $table = 'sitealerts';


public function scopegetSiteAlerts() {

    $alert = DB::table('sitealerts')
            ->where('isActive', '=', '1')
            ->select('isActive', 'alertTitle', 'alertText', 'alertDate', 'created_at',
                'alertStart', 'alertExpires')
            ->orderBy('created_at', 'desc')
            ->get();
            return $alert;


}


}
我的控制器(注意:这是我的用户控制器,我的警报没有单独的控制器)

和我的视图文件(dashboard.blade.php)

@if(isset($alert))

您好,{{$contractor->contact_name;}

欢迎使用您的承包商Herpa仪表板。
您的帐户允许您查看与项目相关的信息。你可以继续进步, 上载文件、进行新的付款/打印收据、查看以前的付款,&;更多

@while($alert) {{$alert->alertTitle} {{$alert->alertDate} {{$alert->alertText} @结束时 @否则

您好,{{$contractor->contact_name;}

欢迎使用您的承包商Herpa仪表板。
您的帐户允许您查看与项目相关的信息。你可以继续进步, 上载文件、进行新的付款/打印收据、查看以前的付款,&;更多

@恩迪夫
我的猜测是,我没有正确设置控制器以访问$alert


任何帮助都将不胜感激。TIA

错误是因为在视图中,当变量作为数组传递时,您将变量视为对象。通常,您不能在视图中访问模型,您应该在控制器中拥有所有的逻辑(就像您所做的那样),然后将数据作为数组通过
->with()
传递给视图

已更新

问题可能出在
@而($alert)
中,请将其替换为以下内容:

                       @foreach ($alert as $a)
            <div class="panel panel-info">
                <div class="panel-heading">
                    <h3 class="panel-title">
                        <i class="icon-bullhorn"></i> {{$a->alertTitle}}
                        <span class="floatRight">
                            {{$a->alertDate}}
                        </span>
                    </h3>
                </div>
                <div class="panel-body">
                    {{$a->alertText}}
                </div>
            </div>
        @endforeach
@foreach($a警报)
{{$a->alertTitle}
{{$a->alertDate}
{{$a->alertText}
@endforeach

您传递的一个对象似乎为空。您确定数据库中有给定id的数据吗?

这里的问题是:

// this returns array of stdObjects
$alerts = DB::table('sitealerts')
        ->where('isActive', '=', '1')
        ->select('isActive', 'alertTitle', 'alertText', 'alertDate', 'created_at',
            'alertStart', 'alertExpires')
        ->orderBy('created_at', 'desc')
        ->get();
        return $alerts;

// then in your view you try to get property of array so replace:
@while($alert)
// with:
@foreach ($alerts as $alert) // in your controller use with('alerts',$alerts);

哪一行触发错误?@edvinas.me{{$alert->alertTitle}}行触发错误
@while($alert)
这怎么不总是正确的?这是因为
$alert
为空。您不能在空的
$alert
上调用
->alertTitle
。请检查我的最新答案实际上您错了。如果您注意到,他正在使用命令get(),该命令将数据返回为object@edvinas.me成功了,现在效果很好。谢谢。@Alen我确实错过了这一点,但是关于在视图中使用模型的评论仍然适用。答案是Updated我认为可能也是这样,但数据库中确实有数据。所有行都有一个值。您正在将警报对象集合传递到视图中。您必须迭代这些集合的每个元素。。。使用foreach构造
                       @foreach ($alert as $a)
            <div class="panel panel-info">
                <div class="panel-heading">
                    <h3 class="panel-title">
                        <i class="icon-bullhorn"></i> {{$a->alertTitle}}
                        <span class="floatRight">
                            {{$a->alertDate}}
                        </span>
                    </h3>
                </div>
                <div class="panel-body">
                    {{$a->alertText}}
                </div>
            </div>
        @endforeach
// this returns array of stdObjects
$alerts = DB::table('sitealerts')
        ->where('isActive', '=', '1')
        ->select('isActive', 'alertTitle', 'alertText', 'alertDate', 'created_at',
            'alertStart', 'alertExpires')
        ->orderBy('created_at', 'desc')
        ->get();
        return $alerts;

// then in your view you try to get property of array so replace:
@while($alert)
// with:
@foreach ($alerts as $alert) // in your controller use with('alerts',$alerts);