laravel ORM 一对一 一对多 多对多 原生的MYSQL怎么写

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了laravel ORM 一对一 一对多 多对多 原生的MYSQL怎么写相关的知识,希望对你有一定的参考价值。

参考技术A INSERT INTO aa (a, b, c, d, e, f, g, h) SELECT id as a, title, c, d, e, f, g, h FROM b WHERE id = 1 这样子可以运行 就是 批量插入的意思 将B表符合条件的记录 插入到aa表中

django ORM 一对多, 多对多 查询 以及 结合Tamplate

ORM 表结构;和管理员是多对多, 和 OS 是一对多

class hosts(models.Model):
out_ip=models.CharField(max_length=32)
in_ip=models.CharField(max_length=32)
app=models.ForeignKey(App)
login_user=models.CharField(max_length=32)
login_pwd=models.CharField(max_length=32)
os=models.ForeignKey(Os)
host_class=models.ForeignKey(Host_Class)
# admins=models.ForeignKey(Admins)
admins = models.ManyToManyField(Admins)
disk=models.IntegerField()
network=models.IntegerField()
desc=models.CharField(max_length=100,null=True)

class Os(models.Model):
name=models.CharField(max_length=32)
#所属管理员
class Admins(models.Model):
name=models.CharField(max_length=32)
def __str__(self):
return self.name

 

一对多:

Python中查询:

all_data=hosts.objects.all()
for i in all_data:
print(i.os.name)  -->查询出主机所对应的 系统名称

再Tamplate中
all_data=hosts.objects.all()
return render(req,‘hosts_index.html‘,locals())

{% for obj in all_data %}
    <div class="c7 ca jg">{{ obj.os.name }}</div>
{% endfor %}



===========多对多:
Python中查询:
all_data=hosts.objects.all()
for i in all_data:
for p in i.admins.all():
print(p)
再Tamplate中
all_data=hosts.objects.all()
return render(req,‘hosts_index.html‘,locals())


{% for obj in all_data %}
<div class="c4 ca jg">
     {% for i in obj.admins.all %}
{{ i }}
{% endfor %}
</div>
{% endfor %}

 

以上是关于laravel ORM 一对一 一对多 多对多 原生的MYSQL怎么写的主要内容,如果未能解决你的问题,请参考以下文章

Laravel5.6 Eloquent ORM 关联关系,一对一和一对多

mybatis映射 一对一,一对多,多对多高级映射

在一对多和多对多中使用ORM

laravel 模型中的一对一,一对多,多对多的关联

如何在 Laravel 中从多对多关系的一对多关系中获取项目?

SQLAlchemy增删改查 一对多 多对多