查询不在Laravel中的函数中工作,但在其他地方工作

时间:2015-02-23 03:55:39

标签: php laravel eloquent laravel-5

我有一个看起来像这样的函数:

  public function update() {
      $reports = Reports::find(1);
      return $reports;
  }

但是这个功能没有返回任何东西。但报告表的确有一个pkey为1的元素:

INSERT INTO `theDatabase`.`reports` (`pkey`, `id`, `comment`, `youtubeUrl`, `displayName`, `profilePictureUrl`, `approvalStatus`, `rep`, `created_at`, `updated_at`) VALUES (1, '1234567890', 'This is just a test report', 'https://example.com', 'Test User', 'https://example.com/somethingsomething', '0', '1', '2015-02-22 00:00:00', '2015-02-22 00:00:00')

如果在同一个函数中我改为::all,我会得到这个回复:

[{"pkey":1,"id":"1234567890","comment":"This is just a test report","youtubeUrl":"https:\/\/youtube.com\/watch?32222","displayName":"Test User","profilePictureUrl":"https:\/\/google.com\/somethingsomething","approvalStatus":0,"rep":1,"created_at":"2015-02-22 00:00:00","updated_at":"2015-02-22 00:00:00"},{"pkey":4,"id":"12345678903","comment":"This is just a test report","youtubeUrl":"https:\/\/youtube.com\/watch?32222","displayName":"Test User","profilePictureUrl":"https:\/\/google.com\/somethingsomething","approvalStatus":1,"rep":1,"created_at":"2015-02-22 00:00:00","updated_at":"2015-02-22 00:00:00"}]

这是代码:

  public function update() {
      $reports = Reports::all();
      return $reports;
  }

所以我有点困惑,为什么这不能正常工作。也;控制器中的另一个功能是使用查询,它没有麻烦返回正确的输出。这是另一个函数的代码:

 public function index() {
      $reports = Reports::all()->where('approvalStatus', '=', 0);

      return view('reports.index', compact('reports'));
  }

我想知道我在这里做错了什么?作为旁注,这是通过邮件请求调用的,其路由如下所示:

Route::post('reports/update', 'ReportsController@update');

怀疑是重要的,但额外的信息并不会受到伤害。

dd($reports)之后执行::find(1)返回以下输出:

undefined: {undefined: -909362565, " ": null}
" ": null
undefined: -909362565

编辑评论:

  $reports = Reports::where("pkey",1);
  dd($reports);
  return $reports;

获取此信息:

ErrorException in Response.php line 406:
Object of class Illuminate\Database\Eloquent\Builder could not be converted to string

0: {undefined: {undefined: 2,…}, Protected property: false}
Protected property: false
undefined: {undefined: 2,…}
Protected property: " class=sf-dump-note>Application</abbr> {<a class=sf-dump-ref href=#sf-dump-748334229-ref22 title="
undefined: 2
1: 3
2: {undefined: 2,…}
3: "Protected property"
4: false

2 个答案:

答案 0 :(得分:2)

Eloquent默认使用id作为主键,find方法按主键查找记录。但是,如果您具有不同的架构,则可以更改主键名称。在Eloquent模型中,您可以指定:

protected $primaryKey = 'pkey';

现在find将使用pkey作为主键。

如果表格名称不是reports,您也可以手动设置它,例如reporting_system

protected $table = 'reporting_system';

答案 1 :(得分:0)

我修改了我的架构,以便pkey现在命名为id,而我的旧id列现在命名为profileId。我猜find()正在使用id作为主键字段。