php - 未定义属性:Illuminate\Database\Eloquent\Builder::$winner_id
问题描述
我的网站上有一个抽奖系统。数据库中现在有 2 个抽奖,但由于某种原因,抽奖页面上只显示最后创建的抽奖。我的代码是:
public function raffling()
{
parent::setTitle('Items raffling | ');
$green_ticket = \DB::table('users')->where('id', $this->user->id)->value('green_ticket');
$kolvo=\DB::table('giveaway_items')->where('status',0)->orderBy('id', 'desc')->count();
$giveaway = Giveaway::orderBy('id', 'desc')->first();
$giveaway_users = \DB::table('giveaway_users')
->where('giveaway_id', $giveaway->id)
->join('users', 'giveaway_users.user_id', '=', 'users.id')
->get();
$giveAway = Giveaway::where('winner_id', '!=', 'NULL')->orderBy('created_at', 'DESC')->first();
$user = User::find($giveAway->winner_id);
$username = $user->username;
$userava = $user->avatar;
$usersteamid = $user->steamid64;
return view('pages.raffling', compact('kolvo', 'giveaway', 'giveaway_users', 'giveAway', 'user', 'username',
'userava', 'usersteamid', 'green_ticket'));
}
我尝试在$giveaway = Giveaway::orderBy('id', 'desc')->first();
而不是first()
使用时进行更改take(2)
,但我收到了错误Undefined property: Illuminate\Database\Eloquent\Builder::$winner_id
。如果我添加take(2)
到该行$giveAway = Giveaway::where('winner_id', '!=', 'NULL')->orderBy('created_at', 'DESC')->first();
而不是first()
.
我的问题在哪里,我该如何解决这个错误?
解决方案
利用take(2)
$giveaway = Giveaway::orderBy('id', 'DESC')->take(2)->get();
推荐阅读
- rust - Rust:在嵌套匹配表达式中可变地借用 self
- java - 如何防止仅针对某些领域的反射?
- mobile - 向 zbarcam 添加功能
- node.js - 部署时我无法让 nodejs 在 apache 上工作
- javascript - 检查每个 JSON 键中的特定数据
- apollo-server - 错误:您必须在调用 `server.applyMiddleware()` 之前`await server.start()`
- javascript - 查询字符串参数分解为字符问题 - javascript
- python - Plyer“NotImplementedError:找不到可用的实现!” 在 .exe 中发送通知时
- typescript - 派生类是否实现了 Typescript 中基类的接口
- javascript - 如何在 react-stripe-js 中禁用条带的高级欺诈检测?