在模型[App \ User]上调用未定义的关系[user_id]

时间:2017-08-12 23:32:18

标签: php laravel laravel-5.4

我正在尝试使用Laravel 5.4(我通常使用5.1)并且我实际上是复制大部分代码,所以我不明白是什么问题,也许是因为有更好的方法来做但是,已经1个小时了,我无法超越这个; 希望你能帮我这个.. 如果这还不够,我会发布我的观点和路线。谢谢大家。

这是我的模特:

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class User extends Model
{

    protected $fillable = ['user_id', 'user_name', 'user_birthday'];

    public static $rules = [
        'user_name' => 'required|max:255',
        'user_birthday' => 'required'
    ];
    public $timestamps = false;

}

控制器:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\User;
class UsersController extends Controller
{

    public function index()
    {
        $users = User::with('user_id')->orderBy('user_id', 'ASC')->paginate(10);

        return view('admin.users.index')->with("user", $users);
    }

    public function create()
    {
        return view('admin.users.create');
    }

    public function store(Request $request)
    {
        $users = new User($request->all());
        $users->save();

        return redirect()->route('admin.users.index');
    }

    public function show($id)
    {
        $users = User::find($id);
    }

    public function edit($id)
    {
        $users = User::find($id);

        return view('admin.users.edit')->with('user', $user);
    }

    public function update(Request $request, $id)
    {
        $users = User::find($id);
        $users->user_name = $request->user_name;
        $users->user_birthday = $request->user_birthday;
        $users->save();

        return redirect()->route('admin.users.index');
    }

    public function destroy($id)
    {
        $users = User::find($id);
        $users->delete();

        return redirect()->route('admin.users.index');
    }
}

1 个答案:

答案 0 :(得分:1)

您的错误来自以下代码行。在模型上使用with时,要加载children relationshipssub-models。这就是为什么应用程序正在寻找用户模型中的关系user_id,认为它是sub-model的{​​{1}},但它不是,所以它返回一个错误。

User model

正确

$users = User::with('user_id')->orderBy('user_id', 'ASC')->paginate(10);