如何解决Prisma Rust Client中的多对多连接编译错误?
解决Prisma Client Rust显式多对多关联编译错误
问题原因
你显式定义了多对多中间表MembersOnEmployers,此时Member与Employer的关联需要通过中间表映射,不能直接使用employer::id::equals作为member::employers::connect的参数——因为connect需要的是中间表的UniqueWhereParam,而非Employer的参数,这就是编译错误的核心原因。
解决方案
有两种可行的修改方式:
方式1:先创建Member,再单独创建中间表关联记录
先完成Member的创建,再通过中间表MembersOnEmployers关联Employer:
// 1. 创建Member let member = client .member() .create( member_data[0].to_string(), member_data[1].to_string(), vec![], ) .exec() .await .unwrap(); // 2. 创建中间表记录,关联Employer和Member client .members_on_employers() .create( prisma::employer::id::equals(employer_id), prisma::member::id::equals(member.id), vec![], // 若需设置transitions字段,可在此添加对应的操作 ) .exec() .await .unwrap();
方式2:创建Member时通过中间表直接关联
利用member::members_on_employers::create操作,在创建Member的同时完成关联:
client .member() .create( member_data[0].to_string(), member_data[1].to_string(), vec![ prisma::member::members_on_employers::create( vec![ prisma::members_on_employers::employer::connect( prisma::employer::id::equals(employer_id.clone()) ), ] ), ], ) .exec() .await .unwrap();
内容的提问来源于stack exchange,提问作者Tim Kariuki
相关产品推荐
相关产品推荐

