我有一个看起来像这样的函数:
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
答案 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
作为主键字段。