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

在多对多关系的情况下如何插入数据透视表?(Laravel 5.3)

崔恺
2023-03-14

我添加数据的表单如下所示:

当klik保存时,它将调用控制器

我的控制器是这样的:

public function store(Request $request)
{
    $param = $request->only('account_name','account_number','bank_id','branch');
    $result = $this->user_service->addUserBank($param);

    if($result)
        $status='success';
    else
        $status = 'failed';
    return redirect('member/profile/setting/account')->with('status',$status);
}

我的服务是这样的:

public function addUserBank($param)
{
    $instance = User::where('id', '=', auth()->user()->id)->first();
    $param['user_id'] = auth()->user()->id;
    $param['status'] = 0;
    $instance->banks()->attach([
                'status' => $param['status'], 
                'account_name' => $param['account_name'],
                'account_number' => $param['account_number'],
                'branch' => $param['branch']
            ]);
    return $result;
}

我的模型用户是这样的:

<?php
namespace App;
use App\Models\MasterData;
use Collective\Html\Eloquent\FormAccessible;
use Illuminate\Notifications\Notifiable;
use Illuminate\Foundation\Auth\User as Authenticatable;
class User extends Authenticatable
{
    use Notifiable, FormAccessible;
    protected $fillable = [
        'name', 'email', 'password', 'api_token','birth_date','mobile_number','gender','full_name'
    ];
    protected $hidden = [
        'password', 'remember_token',
    ];
    public function banks()
    {
        return $this->belongsToMany(MasterData::class, 'users_banks', 'user_id', 'bank_id')  ->withPivot('status','account_name','account_number','branch')->withTimestamps();
    }
}

所以我有3个表:users表、users\u banks表(pivot表)和master\u datas表

类型为bank的主数据表中的银行名称列表

Users表具有字段id、名称、电子邮件、密码等=

Master_datas表有字段id(这是银行id)、名称(这是银行名称)、类型(存在银行类型、订单状态等)。所以,获取类型=银行)

Users\u banks表具有字段id、用户id、银行id、状态、帐户名称、帐户编号、分支机构

运行时,它不会成功插入透视表(表用户\银行)。

这看起来像是我插入数据透视表的方式,不是真的。

你能帮帮我吗?

附加的

表主数据如下所示:

共有2个答案

都沈浪
2023-03-14

创建UserBank模型:

 <?php
    namespace App;
    use Illuminate\Database\Eloquent\Model;
    class UserBank extends model 
    {
        protected $table = 'user_banks';
        protected $fillable = ['user_id','bank_id'];
    }

然后从控制器填充表格:

public function store(Request $request)
{
    $param = $request->only('account_name','account_number','bank_id','branch');
    $result = $this->user_service->addUserBank($param);

    if($result)
    { 
        $pivot=new UserBank();
        $pivot->user_id=auth()->user()->id;
        $pivot->bank_id=$request->bank_id;
        if($pivot->save())
         {
             $status='success';
         }
    }
    else
    {            
            $status = 'failed';
    }

    return redirect('member/profile/setting/account')->with('status',$status);
}
蒯嘉赐
2023-03-14

问题是您没有在addUserBank()方法中传递bank\u id。您可以这样做:

public function addUserBank($param)
{
    $param['status'] = 0;
    auth()->user()
          ->banks()
          ->attach($param['bank_id'], array_only($param, ['status', 'account_name', 'account_number', 'branch']);
    return true;
}

注意:您不需要在这里显式设置user_id,因为Laravel会自动为您设置。

文件

 类似资料:
  • 如果我尝试以下操作,则页面正在加载: 有以下表格:-用户-user_department-部门 数据透视表用户\u部门有两个外键:-部门\u id-用户\u id 在我的用户模型中: 在我的部门模型中: 顺便说一下:以下代码正在工作: 但是我无法在不破坏我的页面的情况下获得用户的部门。 有什么想法吗?

  • 我正在创建一个应用程序,其中用户可以被分配到多个组织,组织可以有多个用户--多对多的关系。 我希望能够这样做:以及 我有表... 我有表... 呃!用户-组织,组织-用户! 和我有数据透视/映射/等。表 表有一个字段和一个字段。 Elecoquent假设并期望-但这不是我为表命名的,也不想重命名。 我设置了以下内容 用户: 然后我测试一下: 并得到以下错误: SQLState[42S02]:找不到

  • 用户表结构:用户 id、名称、用户名、密码、创建时间、更新时间 文章表结构:文章 id、标题、内容、创建时间、更新时间 关系表:文章\用户 id、文章id、用户id处于活动状态、创建时间、更新时间 标签 id、名称、用户id、创建时间、更新时间 透视表项目用户与标记的关系。表:文章\用户\标签 标签号,物品号,用户号 我想连接这些表,以便可以像这样或类似的格式访问 并且应该能够创建/更新smth,

  • 问题内容: 我是一起定义关系和框架的新手,我只是习惯于原始SQL。我做了家庭作业(google + Laravel文档),但是我认为我不太了解它。 以下是相关信息:用户表: 挑战表: User_challenge_links Challenge_sub_categories 所以我的目标..用户->挑战。 关系: 一个用户有许多User_challenge_links 一个User_challen

  • 您好,当我更新或删除API中的数据时,我需要有关laravel 8多对多关系透视表的帮助。这些是我的文件信息。首先,我创建了两个表:Companies(迁移文件) 联系人(迁移文件) 在此之后,创建透视表company\u contact(迁移文件) 模型如下所示:公司模型 } 联系人模型 } 我的路线文件 我的公司控制人 } 公司存储请求 公司资源 也许有人可以帮助我在公司控制器中编写正确的st

  • 我对定义关系和框架都是新手,我只是习惯了原始SQL。我做了家庭作业(google Laravel文档),但我想我只是没有正确理解它。 以下是相关信息:用户表: 挑战表: 用户挑战链接 Challenge_sub_categories 所以我的目标...用户- 这些关系: 一个用户有很多User_challenge_links User_challenge_link有challenge_sub_ca