/** * Insert a new record for the association. * * If save is successful, the model will be returned, otherwise false. * * @param Model|array $attributes * @return Model|false */ public function insert($attributes) { if ($attributes instanceof Model) { $attributes->set_attribute($this->foreign_key(), $this->base->get_key()); return $attributes->save() ? $attributes : false; } else { $attributes[$this->foreign_key()] = $this->base->get_key(); return $this->model->create($attributes); } }
/** * Save the model instance to the database. * * @return bool */ public function save() { if (!static::$not_autoincremented_key) { return parent::save(); } else { if (!$this->dirty()) { return true; } if (static::$timestamps) { $this->timestamp(); } $this->fire_event('saving'); if ($this->exists) { $query = $this->query()->where(static::$key, '=', $this->get_key()); $result = $query->update($this->get_dirty()) === 1; if ($result) { $this->fire_event('updated'); } } else { $result = $this->query()->insert($this->attributes); $this->exists = $result; if ($result) { $this->fire_event('created'); } } // After the model has been "saved", we will set the original attributes to // match the current attributes so the model will not be viewed as being // dirty and subsequent calls won't hit the database. $this->original = $this->attributes; if ($result) { $this->fire_event('saved'); } return $result; } }
/** * Get the database connection for the model. * * @return Connection */ public function connection() { return Database::connection($this->model->connection()); }
public function __call($method, $parameters) { if ($this->has_macro($method)) { return $this->call_macro($method, $parameters); } return parent::__call($method, $parameters); }
public function __construct($table, $connection = null) { $this->pivot_table = $table; $this->pivot_connection = $connection; parent::__construct(array(), true); }