Database design 使用内部联接获取Laravel刀片模板中的数据库信息

Database design 使用内部联接获取Laravel刀片模板中的数据库信息,database-design,data-binding,laravel,laravel-4,Database Design,Data Binding,Laravel,Laravel 4,这个问题与Laravel有关,但也与一般数据库设计有关,因为我对这两个方面都不熟悉 我制作了一个如下的数据库: <a href="{{ URL::to('people/' . $people->address) }}" class="thumbnail"> 人 身份证 名字 姓氏 地址 叶田田 地址 id 第1行 城市 陈述 拉链 叶田田 有一个“人”,它可以有一个地址。我之所以这样拆分,是因为公司(这个应用程序的另一部分)也会有地址,会议地点

这个问题与Laravel有关,但也与一般数据库设计有关,因为我对这两个方面都不熟悉

我制作了一个如下的数据库:

            <a href="{{ URL::to('people/' . $people->address) }}" class="thumbnail">

  • 身份证
  • 名字
  • 姓氏
  • 地址
  • 叶田田
地址

  • id
  • 第1行
  • 城市
  • 陈述
  • 拉链
  • 叶田田
有一个“人”,它可以有一个地址。我之所以这样拆分,是因为公司(这个应用程序的另一部分)也会有地址,会议地点和POI也会有地址。我正在建立一个CRM类型的系统。现在,我需要从数据库中检索信息。但是有一个问题,因为有两列名为“id”

我的内心连接如下。它的工作原理是: $people=DB::表('people') ->join('address','address.id','=','people.address')) ->get()

但当我转到我的Laravel刀片模板时,一切正常内部连接成功并显示数据,但我需要创建一个资源丰富的控制器链接,链接到ID,以便可以在其自己的页面上查看:

        @foreach ($people as $people)
            <li>
                <a href="{{ URL::to('people/' . $people->id) }}" class="thumbnail">
                    <img src="" />
                </a>
                <div class="caption">
                    <p>
                        {{ $people->firstname }}<br />
                        {{ $people->lastname }}<br />
                        {{ $people->line1 }}<br />
                        {{ $people->city }}<br /><br />

</p>
            </li>
        @endforeach
@foreach($people as$people)
  • {{$people->firstname}}
    {{$people->lastname}}
    {{$people->line1}}
    {{$people->city}}

  • @endforeach
    它返回非常疯狂的结果,因为它不知道使用哪个“id”。(它使用的是地址表的id,结果很奇怪)

  • 有没有办法在Laravel中指定表名?(这不起作用):

    
    
  • 或者,在两个不同的表中不使用“id”是一般的良好数据库实践吗?在这种情况下,我可以重命名,问题就会得到解决


  • 谢谢您的帮助。

    您可以随时重命名id字段,但这不是必需的。可以使用SELECT查询指定列。例如,选择address.id作为address\u id,people.id作为people\u id。这种方法的缺点是您需要指定每个列名。

    对于我在DB design and join子句中看到的内容,
    people
    表(
    people.address
    )的
    address
    列包含
    address
    表的id

    如果是这样,您可以在刀片视图中使用
    people.address
    ,如下所示:

                <a href="{{ URL::to('people/' . $people->address) }}" class="thumbnail">
    

    顺便说一句:雄辩会让你的生活更轻松。@Mike Anthony我对Laravel很陌生,但我想我正在使用雄辩。这是我的控制器'code'$people=DB::table('people')->join('address','address.address_id','=','people.address')->get();返回视图::make('people.index')->带有('people',$people);'/代码'我最后查看了一些其他资源,他们建议我有两个字段:地址id映射到字段地址,人员id映射到字段人员。有点烦人,但我认为数据库设计更好。这不起作用。但我最终重命名了这些列,以便使用映射到“address”列的“address\u id”。我没有尝试左连接,尽管它可能更好。我将不得不研究一下连接——MySQL的可怕部分,因为我还没有完全掌握它们。你可以看看这个
                <a href="{{ URL::to('people/' . $people->address) }}" class="thumbnail">
    
     $people = DB::table('people') ->leftJoin('address', 'address.id', '=', 'people.address') ->get();