Я делаю сайт, используя Laravel.У меня есть Model
для сообщений.У меня есть статический метод getPost
, который должен создать новый экземпляр моей Post
модели с использованием ассоциативного массива столбцов в таблице posts
.
. Я хотел бы иметь соответствующие переменные вPost
класс модели, имя которого совпадает с именем столбца в таблице.
т.е.
Posts:
_________________________________________________
| id | title | ...etc | |
|-------------------------------------------------|
| 1 | This | | |
|-------------------------------------------------|
| 2 | That | | |
Тогда в моем классе:
<?php
class Post extends Model
{
public $id, $title;
public function __construct(array $attributes = [], $data = null)
{
parent::__construct($attributes);
if(!is_object($data)) return;
/*Set $this->title = $data->title, $this->id = $data->id
Except a quicker way to set variables of the same name to
the corresponding key in the array without having to do the above
for every single variable, which will become a problem as the
the table grows and holds more data which is what I anticipate.*/
}
static public function getPost($id)
{
$temp = new Post();
$post = DB::table($temp->getTable())->where('id', $id)->first();
return new Post([], $post);
}
}
Так же, как язаявил, что я хочу, чтобы переменные в моем классе с тем же именем, что и ключи в ассоциативном массиве, были автоматически установлены в их значения.Я не знаю ни одного способа сделать это в настоящее время.При необходимости я могу установить их вручную в конструкторе, но мне просто интересно, есть ли более простой и менее болезненный способ сделать это?Как какая-то функция или нет.
Спасибо за любую помощь или совет!