如何正确扩展Laravel模型?

时间:2017-08-23 15:08:11

标签: php laravel inheritance database-design eloquent

我对Laravel Eloquent处理模型的方式还很陌生。

我需要创建一个带有一些常见属性和关系的基类Product类,以及一些其他不具有共同属性的类。

我将尝试快速举例:所有产品都有“serial_number”,“ship_date”等......

但只有Bottle和Bulb类具有“glass_type”功能,而Chair类具有另一个功能。

我正在做一些

  $(document).ready(function() {
            $("a[rel=example_group]").fancybox({
                'transitionIn'      : 'none',
                'transitionOut'     : 'none',
                'titlePosition'     : 'over',
                'titleFormat'       : function(title, currentArray, currentIndex, currentOpts) {
                    return '<span id="fancybox-title-over">Image ' + (currentIndex + 1) + ' / ' + currentArray.length + (title.length ? ' &nbsp; ' + title : '') + '</span>';
                }
            });


            $("a[rel=example_group_crm]").fancybox({
                'transitionIn'      : 'none',
                'transitionOut'     : 'none',
                'titlePosition'     : 'over',
                'titleFormat'       : function(title, currentArray, currentIndex, currentOpts) {
                    return '<span id="fancybox-title-over">Image ' + (currentIndex + 1) + ' / ' + currentArray.length + (title.length ? ' &nbsp; ' + title : '') + '</span>';
                }
            });

            $("a[rel=example_group_human]").fancybox({
                'transitionIn'      : 'none',
                'transitionOut'     : 'none',
                'titlePosition'     : 'over',
                'titleFormat'       : function(title, currentArray, currentIndex, currentOpts) {
                    return '<span id="fancybox-title-over">Image ' + (currentIndex + 1) + ' / ' + currentArray.length + (title.length ? ' &nbsp; ' + title : '') + '</span>';
                }
            });

 });

但我认为这样产品没有任何附加的db $ ,我不知道如何处理迁移表和背后的逻辑。

在这里申请的最佳方法是什么?

提前谢谢

2 个答案:

答案 0 :(得分:0)

在您的模型(扩展基本模型的子模型)中添加表名称
显然,例如:

class SomeChildModel extends BaseModel {

  // Manually set the table name
  protected $table = 'table_name';

}

答案 1 :(得分:-1)

我们已经部分解决了#34;这包括在产品模型中包含所有需要的字段。此外,我们还引入了一个Type字段(&#34; glass&#34;,&#34; Chair&#34;)并创建了不同的getter方法。

除此之外,你可以使用这里描述的更优雅的方法,将每种类型的商店存储在一个单独的表中:Extending Eloquent Models in Laravel (use different tables)