php - 此集合实例上不存在属性 [stats]
问题描述
我是 laravel 的新手,我收到了这个错误
此集合实例上不存在属性 [stats]。(查看:C:\xampp\htdocs\enginepoker2\resources\views\pages\players.blade.php)
这是在 player.blade.php
@foreach ($player_stats->stats as $player_stat)
<tr class="gradeX">
<td><a href="">{{ $player_stat->username }}</a></td>
<td>{{ $player_stat->country }}</td>
<td>{{ $player_stat->rank }}</td>
<td class="center"><a href="#" class="name" data-name="winpot" data-pk="{{ $player_stat->ID }}" data-type="text" data-url="{{ route('updatePlayer') }}">{{ number_format($player_stat->winpot, 2, ',', '.') }}</a></td>
<td class="center"><a href="#" class="name" data-name="freeGames" data-pk="{{ $player_stat->ID }}" data-type="text" data-url="{{ route('updatePlayer') }}">{{ $player_stat->freeGames }}</a></td>
<td class="center"><a href="#" class="name" data-name="transferLimit" data-pk="{{ $player_stat->ID }}" data-type="text" data-url="{{ route('updatePlayer') }}">{{ number_format($player_stat->transferLimit, 2, ',', '.') }}</a></td>
</tr>
@endforeach
这是在控制器中
use App\players;
use Illuminate\Http\Request;
class playerController extends Controller
{
public function index()
{
$player_stats = players::where('bot', '=', '0')->orderBy('ID', 'DESC')->limit('500')->get();
return view('pages.players', [ 'player_stats'=>$player_stats]);
}
}
这是在玩家模型中
namespace App;
use Illuminate\Database\Eloquent\Model;
class players extends Model
{
protected $player = 'players';
public function stats()
{
return $this->belongsTo(stats::class);
}
}
这是在统计模型中
namespace App;
use Illuminate\Database\Eloquent\Model;
class stats extends Model
{
protected $player = 'stats';
public function players()
{
return $this->hasMany(players::class);
}
}
解决方案
stats 是一个关系,默认情况下不加载关系;您应该更改控制器中的查询以加载关系。用这个:
$player_stats = players::where('bot', '=', '0')->with('stats')
->orderBy('ID', 'DESC')->limit('500')->get();
编辑:根据评论,您应该告诉 laravel 哪些列用于关系。而且这种关系是反向定义的。尝试这个:
也改变你的关系:
class players extends Model
{
protected $player = 'players';
public function stats()
{
return $this->hasMany(stats::class, 'player', 'username');
}
}
class stats extends Model
{
protected $player = 'stats';
public function players()
{
return $this->belongsTo(players::class, 'player', 'username');
}
}
推荐阅读
- javascript - 请求失败,状态码 413,请求实体太大
- javascript - 如果存在,则检查多个邮政编码数组,然后找到相应的费率
- spring - spring-boot-starter-parent 资源包含/排除说明
- javascript - 如何检测是否在JS中按下了回车键
- pandas - 如何确定镶木地板文件的差异
- mysql - Cordova phonegap 图片上传
- reactjs - 如何测试子组件是否已呈现?
- java - 有没有办法使用线程在同一帧中显示不同的图像?
- javascript - ReactJS:如何将检索到的 post json 响应显示到我用来提交值的同一表单组件?
- c# - 如何以编程方式将 WPF 扩展工具中的元素添加到网格?