雄辩的ORM all()没有返回任何东西

时间:2015-02-04 15:49:01

标签: laravel eloquent

如果我这是一个愚蠢的问题,请把我击倒,但我真的很难让这个all()功能为我工作。它正在为我返回空列表。任何帮助将受到高度赞赏。我在通讯表中有两行

模型看起来像这样 -

<?php

use Illuminate\Auth\UserTrait;
use Illuminate\Auth\UserInterface;
use Illuminate\Auth\Reminders\RemindableTrait;
use Illuminate\Auth\Reminders\RemindableInterface;

class Newsletters extends Eloquent {

//use UserTrait, RemindableTrait;
use SoftDeletingTrait; // <-- Use This Insteaf Of protected $softDelete = true;


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

/**
 * The attributes excluded from the model's JSON form.
 *
 * @var array    */


protected $guarded = array('newsletterId');
protected $fillable = array('name', 'subject','from_email','from_name');

public static $rules = array(
    'name' => 'required|min:5',
    'subject' => 'required|min:5',
    'from_email' => 'required|email',
    'from_name' => 'required'
);

}

我在控制器中的电话是这样的 -

<?php

class newslettersController extends \BaseController {

/**
 * Display a listing of the resource.
 *
 * @return Response
 */
public function index()
{
    //$newsletters = Newsletters::paginate(3);      
    $newsletters = Newsletters::all();
    echo $newsletters;exit();
    return View::make('newsletters.index', compact('newsletters'));
}

3 个答案:

答案 0 :(得分:4)

0000-00-00 00:00:00列中的任何值 - 甚至deleted_at - 都会告诉Laravel项目已被删除。将该列的默认值更改为NULL,否则新项目将在创建时标记为已删除。

如果您在迁移中使用它,$table->softDeletes()架构功能会自动执行此操作。

答案 1 :(得分:2)

只要您使用SoftDeletingTrait,全局范围就会应用于您的模型的每个查询,因此deleted_at 不是NULL 的所有记录都将被忽略了。

Illuminate\Database\Eloquent\SoftDeletingScope

public function apply(Builder $builder)
{
    $model = $builder->getModel();

    $builder->whereNull($model->getQualifiedDeletedAtColumn()); // <<-- this

    $this->extend($builder);
}

deleted_at列的默认值更改为NULL,并将现有记录更新为NULL

答案 2 :(得分:-1)

如果你确定新闻通讯是正确的表名,@ Ray说。 试试这个:

$newsLetters = DB::table('newsletters')->get();