@likunyan 还在吗,能否帮我看个无厘头的问题,我卡在了 10.3 章节。关于 UsersController.php 的 public function show() 的问题:
app/Http/Controllers/UsersController.php
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\User;
use Auth;
use Mail;
class UsersController extends Controller
{
.
.
.
public function show(User $user)
{
$statuses = $user->statuses()
->orderBy('created_at', 'desc')
->paginate(10);
return view('users.show', compact('user', 'statuses'));
}
.
.
.
}
app/Models/User.php
<?php
namespace App\Models;
use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;
use Illuminate\Support\Str;
class User extends Authenticatable
{
.
.
.
public function statuses()
{
return $this->hasMany(Status::class);
}
}
app/Models/Status.php
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Status extends Model
{
public function user()
{
return $this->belongsTo(User::class);
}
}
数据库迁移都没问题,数据库里,用户文章数据都生成的很成功。
打开 http://weibo.test/users/2 报错:
BadMethodCallException
Call to undefined method App\Models\User::statuses()
我用的是 Laravel6.x,报错页面中的 Stack Trace 提示我 app/Http/Controllers/UsersController.php 里面的 public function show(User $user) {} 里面的 $statuses = $user->statuses() 这行有问题,但是我的编辑器 Sublime 的智能显示这里的 statuses 被 Definition 定义在 app/Models/User.php 里面,app/Models/User.php 里面的 public function statuses(){return $this->hasMany(Status::class);} 也被编辑器智能显示被 app\Http\Controllers\UsersController.php Reference 调用的很成功。
推荐文章: