Comments (8)
I ended up here with the same question after searching 😉, I then found the following hints, which I thought it would be helpful to post here:
- Example on stackoverflow showing this is working now: http://stackoverflow.com/a/22153459/1808480
- Docs on with/update Pivot http://bookshelfjs.org/#Model-withPivot
- Related discussion #134
from bookshelf.
At the moment I'm just creating a join table model like so:
class Collection
addLink: (link) =>
cl = db.Models.CollectionLink.forge
collectionId: @id
linkId: link.id
order: 0
cl.save()
from bookshelf.
So I think I intended to be able to pass a model as a joinTableName
but hadn't quite gotten there yet... If you want to try to work out an implementation/tests for it as a PR, that'd be great...I think the issue may have been with the need for a composite key based on the foreignKey
& otherKey
but also potentially allowing an idAttribute
id... I'm not sure, I'll take out that comment for now so it's not confusing.
Right now you can do this:
collection.belongsToMany(db.Models.Link).attach(link.attributes)
And the object that is set as the attributes will be saved with additional columns, but I realize that doesn't help with wanting a model/methods/timestamps on the join table... I'll think a bit more about this one.
from bookshelf.
Oh... I know what I was going to do here - the equivalent of ActiveRecord's hasMany :through
- where you could do
links: function() {
return this.hasMany(Links, CollectionsLinks);
}
And then you'd have a CollectionsLinks
model to work with for the joining table... Didn't quite work through the specifics, including how you'd access the join model or how the the fetch/eager loading on that would work... Does that make sense though?
from bookshelf.
Yep that makes sense.
from bookshelf.
So @vjpr - this is sort of in the works. With 0.3.0 I added .belongsToMany(Model).through(OtherModel)
which works well for retrieval, but I'm still working out how attaching & working with the OtherModel
happens. I'll keep you posted when I make progress on this one.
from bookshelf.
Hey, just wondering if there's an update on how to attach relations with a join model/table with additional attributes (timestamps, etc)?
from bookshelf.
Hi @ErisDS. Thanks for pointing this out. I'll try to update the docs soon.
from bookshelf.
Related Issues (20)
- Change primary key value
- withRelated TypeScript error HOT 1
- Bookshelf.js update query not returning expected data
- Bookshelf.js update query not returning expected data
- Enhancement: ignore extra keys in withRelated option?
- ErrorCtor [CustomError]: EmptyResponse HOT 1
- How to save a object with hasMany/hasOne relations ?
- Make has_one relation with another model with composite id, Is it possible?
- [email protected]" has incorrect peer dependency "knex@>=0.15.0 <0.22.0" HOT 23
- Unable to use method named as attributes( ) in a model.
- Doc: MSSQL support
- How to know if a transaction has been committed? HOT 1
- Typescript models do not have relationship functions HOT 1
- Loop of transactions or transactions + promise pool
- Remove freenode references HOT 1
- Bookshelf using vulnerable version of lodash
- Property 'fetchPage' does not exist on type.
- Is Bookshelf actively maintained? HOT 1
- Limited SQL Injection Vulnerability in Bookshelf.js
- Specify sub-ordinate database name to connect to through Bookshelf model
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from bookshelf.