学说映射:鉴别者?

时间:2015-07-21 08:31:21

标签: symfony doctrine

我有3个班级: <!DOCTYPE html> <!-- To change this license header, choose License Headers in Project Properties. To change this template file, choose Tools | Templates and open the template in the editor. --> <html> <?php include 'header.php'; include 'footer.php'; include '.\config.php'; ?> <head> </head> <body> <div id="page-wrapper"> <div class="row"> <div class="col-lg-12"> <h1 class="page-header">Asset and Sim Details</h1> </div> <div class="col-lg-6"> <div class="panel panel-default"> <!-- /.panel-heading --> <div class="panel-body"> <!-- Nav tabs --> <ul class="nav nav-pills"> <li><a href="#Asset-pills" data-toggle="tab">Asset</a> </li> <li><a href="#Sim-pills" data-toggle="tab">Sim</a> </li> </ul> <!-- Tab panes --> <div class="tab-content"> <div class="tab-pane fade in active" id="Asset-pills"> <div class="panel-body"> <div class="table-responsive"> <form name = "form" id = "form_1" action="store_asset.php" method = "POST" > <div class = "col-lg-12"> <div class = "form-group"> <label>Device Name</label> <select name = "device_name"> <option>Laptop</option> <option>Mobile</option> <option>Data Card</option> </select> </div> <div class = "form-group"> <label>Company name</label> <input class = "form-control" name = "company_name" pattern="[A-Za-z]{25}" type = "text" id = "company_name" placeholder = "Enter Company name" title = "Please Enter company name of Device" required="required" > </div> <div class = "form-group"> <label>Model Number</label> <input class = "form-control" name = "model_number" pattern="[A-za-z0-9]{25}" type = "text" id = "model_number" placeholder = "Enter Model number" title = "Enter model number of Your Device " required="required"> </div> <div class = "form-group"> <label>OS version</label> <input class = "form-control" name = "os_version" pattern="[A-za-z0-9]{25}" id = "Os_versionid" placeholder = "Enter OS version detail" required="required" /> </div> </div> <div class = "col-lg-12"> <button type = "submit" class = "btn btn-primary" id = "submit" name = "sub" data-toggle = "modal" data-target = "#myModal">Submit</button> <button type = "reset" class = "btn btn-primary">Reset</button> </div> </form> </div> </div> </div> <div class="tab-pane fade" id="Sim-pills"> <div class="panel-body"> <div class="table-responsive"> <form action="store_sim.php" method="POST"> <div class="col-lg-12"> <div class="form-group"><br> <label>Type</label> <select name="sim_type"> <option>Prepaid</option> <option>Postpaid</option> </select> </div> <div class="form-group"> <label>Simcard Number</label> <input class="form-control" name="simcard_no" type="number" id="simcard_name" required="required" placeholder="Enter Simcard Number" title="Please Enter Simcard Number"> </div> <div class="form-group"> <label>Service Provider</label> <input class="form-control" name="service_provider" type="text" id="service_provider" required="required" placeholder="Enter Service provider name" title="Enter Service provider name "> </div> </div> <div class="col-lg-12"> <button type="submit" class="btn btn-primary" id="submit" name="sub" data-toggle="modal" data-target="#myModal">Submit</button> <button type="reset" class="btn btn-primary">Reset</button> </div> </form> </div> <!-- /.table-responsive --> </div> <!-- /.panel-body --> </div> </div> </div> <!-- /.panel-body --> </div> <!-- /.panel --> </div> <!-- /.col-lg-12 --> </div> </div> <script src="../../bower_components/metisMenu/dist/metisMenu.min.js"></script> <!-- DataTables JavaScript --> <script src="../../bower_components/DataTables/media/js/jquery.dataTables.min.js"></script> <script src="../../bower_components/datatables-plugins/integration/bootstrap/3/dataTables.bootstrap.min.js"></script> <!-- Custom Theme JavaScript --> <script src="../../dist/js/sb-admin-2.js"></script> <script> $(document).ready(function () { $('#dataTables-example').DataTable({ responsive: true }); }); </script> </body> </html> 。 B扩展A和C扩展B. 让我们把名字放在这些上,这样我们就能更好地理解。

A, B, and C扩展HumanBeing C延伸哺乳动物B

但是我也有一些类,比如A,它直接扩展了Mammal而没有扩展Person(似乎合法......我猜)。

Person扩展Cow的唯一原因是因为在某些时候,在某个其他实体中,我需要一个链接到HumanBeing的属性(由HumanBeing继承,但也是其他类如PersonFanOfJustinBieber)。

实际上,PrometheusMovieScriptWriter实体只是一个链接表,在我的梦想世界中它应该是:

  • ID
  • linked_id(可以是HumanBeingPersonFanOfJustinBieber
  • 鉴别

没有任何继承,PrometheusMovieScriptWriter直接延伸Person,juste就像Mammal

但是我找不到告诉Doctrine的方法,我的班级Cow需要一个鉴别器,并且需要有一个指向HumanBeingPerson和{{1}的属性而且,如果他们不再共享一个共同的扩展类(除了来自FanOfJustinBieber,但由于有很多类扩展PrometheusMovieScriptWriter,我想我不能使用这个)。 / p>

这是我想象的方案:

Mammal

Mammal

Person,Cow,FanOfJustinBieber -> Mammal

我很难找到HumanBeing类的声明,特别是Doctrine注释。

对于HumanBeing: {id, linked_id (Person, ...), discriminator},这似乎很简单(在SomeOtherEntity: {id, someAttribute, HumanBeing}之上Person); @MappedSuperClass()Mammal)更容易。

非常感谢任何帮助!

谢谢:)

0 个答案:

没有答案
相关问题