Model References

For convenience, Blueprint will use the name of a controller to infer the related model. For example, Blueprint will assume a PostController relates to a Post model.

Blueprint also supports a dot (.) syntax for more complex references. This allows you to define values which reference columns on other models.

For example, to find a User model within the PostController you may use:

controllers:
  Post:
    show:
      find: user.id
      # ...

While these references will often be used within Eloquent and query statements, they may be used in other statements as well. When necessary, Blueprint will convert these into variable references using an arrow (->) syntax.

Many times within a controller you will be referencing a model. Blueprint attempts to infer the context based on the controller name.

However, there may be some statements where you need to reference additional models. You may do this by specifying the name of the model. This may be a model that you are generating in the current draft file or an existing model within your application.

You should reference these models using their class name. For example, User. If you have namespaced the model, you should prefix it with the appropriate namespace relative to the model namespace. For example, Admin\User.

If you wish to also reference an attribute of a model for one of the statements, you may specify it using dot notation. For example, User.name.

Let’s consider the following draft file:

controllers:
  Post:
    index:
      query: all
      render: post.index with:posts
    create:
      find: user.id
      render: post.create with:user
    store:
      validate: title, published_at
      save: post
      redirect: post.show
    show:
      query: all:comments
      render: post.show with:post,comments

Based on the model name, Blueprint will use the model Post for any context that doesn’t reference a model by name.

In this case, the validate statement will use title, published_at on the Post model.

The index action will query all posts. However, the show action will query all comments. And the create action will find the User model by the id attribute.