在实例化扩展Laravel的Eloquent Model类的模型类之后,有没有办法确定属性/属性是否映射到表,因此可以保存到表中?
例如,我有一个 announcements
表,列 id
, text
和"created_by" .
我怎么知道 created_by
是一个属性,如果设置将被保存?
$announcement = new Announcement();
isset($announcement->created_by)
可以理解,如果我没有't explicitly set the value yet. I have tried various functions inherited from the Eloquent model class, but so far none have worked. I'我正在寻找类似的东西,则返回false:
$announcement->doesThisMapToMyTable('created_by')
无论是否已设置 $announcement->created_by
,都返回true .
5 回答
对于Laravel 5.4:
如果您的模型充满了数据,您可以:
对于空模型(新模型),遗憾的是,您必须使用小型黑客获取列 . 将此方法添加到BaseModel:
从中扩展您的模型:
然后你将能够:
您可以使用Schema facade查找列,而不是将自己的查找写入数据库内部:
Laravel 5.4
我使用Leiths的答案来创建通用的辅助方法,它自动将JS-object映射到Laravel模型(并且基本上忽略那些不属于模型的属性,从而避免了未定义列的QueryBuilder错误消息) . 另外包含简单的createOrEdit -approach(即使没有“ID存在吗?” - 验证):
我曾经
!empty($announcement->created_by)
这对我来说很有用