假设我有一个User
模型has_many
Post
。
我抓了一个用户:
user = Repo.get(User, 1)
现在我想获得此用户的所有帖子。我找到的唯一解决方案是:
posts = Repo.preload(user, :posts).posts
但它很难看。那有什么简写吗?
答案 0 :(得分:5)
您可以使用Ecto.assoc/2
获取所有帖子的查询,然后将其传递给Repo.all/1
以实际获取这些帖子:
iex(1)> user = Repo.get(User, 1)
iex(2)> Ecto.assoc(user, :posts)
#Ecto.Query<from p in MyApp.Post, where: p.user_id == ^1>
iex(3)> Ecto.assoc(user, :posts) |> Repo.all
[debug] QUERY OK source="posts" db=2.4ms
SELECT p0."id", p0."title", p0."user_id", p0."inserted_at", p0."updated_at" FROM "posts" AS p0 WHERE (p0."user_id" = $1) [1]
...
答案 1 :(得分:2)
class Child extends Component{
render(){
<div onClick={this.props.someFn(this, data)}>
</div>
}
}
答案 2 :(得分:1)
user = Repo.get(User, 1) |> preload(:posts)
是您案件的简写