当前位置: 首页 > 知识库问答 >
问题:

如何在控制器Laravel中调用变量

上官扬
2023-03-14

我正在尝试使用< code>Auth::user()-

我已经检查并包含了所需的文件,我正在从用户表中获取用户“id”

$user_id = Auth::user()->id;
echo $user_id; //this is returning right user "id"

我在调用变量并将其发布到控制器函数中的DB时遇到问题。任何帮助都可以。

public function store(Request $request)
    {
        $user_id = Auth::user()->id;
        $this->validate($request, [
            'token1' => 'required',
            'token2' => 'required'
        ]);
        $tokens = new Tokens([
            'user_id' => $user_id,
            'token1' => $request->get('token1'),
            'token2' => $request->get('token2')
        ]);
        $tokens->save();
        return view('/home');
    }

将User表中的User"id"发布到Tokens表的"user_id"中,以便我可以使用模型

出现此错误:

SQLSTATE[23000]:完整性约束冲突:19非空约束失败:令牌。user_id(SQL:插入“令牌”(“token1”、“token2”、“updated_at”、“created_at”)值(asddsadf、sdfasdf,2019-09-24 11:53:57、2019-9-24 11-53:57))

我的迁移是:

    $table->bigIncrements('id');
    $table->integer('user_id');
    $table->string('token1');
    $table->string('token2');
    $table->timestamps();

共有1个答案

郦昆
2023-03-14

您应该避免以这种方式填充user_id。

抛出错误是因为user_id不是可填充属性。但是处理它的正确方法是使用关系。

因此,我假设令牌具有belongsTo,因为它的user_id外键(无论如何,它应该是无符号整数列),在您的模型中,您有如下内容:

public function user() {
  return $this->belongsTo(User::class) 
}

如果您查看官方留档,您会发现您应该以这种方式更改代码:

public function store(Request $request)
    {

        $this->validate($request, [
            'token1' => 'required',
            'token2' => 'required'
        ]);

$tokens = new Tokens([
            // 'user_id' => $user_id, This is useless
            'token1' => $request->get('token1'),
            'token2' => $request->get('token2')
        ]);

        // With this method you're going to set the user_id column
        $token->user()->associate(auth()->user());

        $tokens->save();

        return view('/home');
    }

 类似资料:
  • 问题内容: 在Laravel 4中我只使用了一个函数 从我的秃头模板(查看页面)调用控制器功能。现在我正在使用Laravel 5做一个新项目,我尝试了这种方法从刀片模板中调用控制器函数。但是它不起作用并显示了一些错误。是否有任何方法可以从Laravel 5的视图页面中调用控制器函数? 问题答案: 如果您有一个要在多个地方使用的功能,则应在helpers文件中对其进行定义,要在app / Http

  • 所以我有一个Laravel控制器: 目前,我正在使用artisan(在引擎盖下运行PHP的内置开发Web服务器)运行应用程序: 我想将控制台消息记录到artisan进程的管道中。

  • 问题内容: 在kohana框架中,我可以使用以下命令通过命令行调用控制器 是否可以通过CLI在Laravel 5中调用我想要的控制器?如果是,该怎么做? 问题答案: 到目前为止,还没有办法(不确定是否会发生)。但是,您可以创建自己的Artisan Command 来执行此操作。使用以下命令创建命令: 对于Laravel 5.3或更高版本,您需要使用: 这将在中生成命令类。该类的内容应如下所示: 然

  • 问题内容: 我已经阅读了一段时间,发现可以使用以下命令调用控制器操作: 这是否意味着我应该将MicrosoftMvcAjax.js或MicrosoftAjax.js与Jquery库一起添加? 另外,第二个参数应在$ .ajax()函数中包含什么? 最后,在stackoverflow内或站点外部是否有其他链接可能对带ajax和jquery的asp.net mvc有帮助? 谢谢。 问题答案: 您可以从

  • 问题内容: 我想在控制器中调用视图方法,但我不知道如何:)我寻求类似的示例,但没有找到它。我可以在这段代码中这样做吗?我是否必须重新构建?我使用javafx和fxml技术(来构建用户界面)。 我的视图文件(它具有gotoRegister()和gotoLogin()方法(我想调用它们)) 我的控制器(在这里我想调用gotoRegister()方法) 我的问题:我可以调用gotoRegister吗?或

  • 我有看起来像这样的RestController: 我想知道如何将模拟对象传递给其他Controller,后者可以处理数据并将其保存到其他存储库。例如,它可以如下所示: 但我知道这种做法是不允许的。有什么办法可以做到这一点?