当前位置: 首页 > 知识库问答 >
问题:

获取多个外键值并在视图中输出它们

呼延明朗
2023-03-14

我正在做一个预订系统,这是我目前使用的表。我无法获取客户端支付的外键值。我已经把关系放在模型里了。

预订

    <?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class booking extends Model
{
   protected $fillable = ['clientID', 'checkInDate', 'checkOutDate', 'roomsCount', 'roomTypeID', 'adultsCount', 'childrenCount', 'amenityID', 'paymentID'];


    public function client()
    {
        return $this->belongsTo('App\Client','clientID');
    }
    public function payment()
    {
        return $this->hasOne('App\Payment');
    }
    public function amenities()
    {
        return $this->hasOne('App\Amenities');
    }

客户端

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class client extends Model
{
   protected $fillable = ['fullNmae', 'firstName', 'lastName', 'phoneNumber', 'emailAddress'];
  public function booking()
  {
      return $this->hasMany('App\Booking');
  }
}

付款

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class payment extends Model
{
   protected $fillable = ['clientID', 'paymentMethod', 'invoiceNum', 'accountName', 'amountPaid', 'datePaid', 'payment_image', 'comments'];
  public function booking()
  {
      return $this->belongsTo('App\Booking');
  }
}

我现在用这个来访问外键

$bookingDetail = booking::with('client', 'payment')->get();
        return view('detail')
        ->with('bookingDetail', $bookingDetail);

查看

{{ $bookingDetail->payment->paymentMethod }}

我犯了一个错误

SQLSTATE[42S22]:未找到列:“where子句”中的1054未知列“clients.id”(SQL:select*fromclientswhereclientsidin(3,4,5,6,7,8,9,10,11,12,13,14,15,16,17))

这样做对吗?还是我遗漏了什么。我是拉威尔的新手,所以我不知道这样做是否正确

共有1个答案

翟永春
2023-03-14

当定义关系时,laravel能够使用“方法名称”“_id”结构检测外键。

但是如果你的外键与这个模式不匹配,那么你必须手动指定键。

public function booking()
{
  return $this->belongsTo('App\Booking',$foreignKey,$ownerKey);
}

public function payment()
{
    return $this->hasOne('App\Payment',$foreignKey, $ownerKey);
}
 类似资料:
  • 问题 你想执行一个外部命令并以Python字符串的形式获取执行结果。 解决方案 使用 subprocess.check_output() 函数。例如: import subprocess out_bytes = subprocess.check_output(['netstat','-a']) 这段代码执行一个指定的命令并将执行结果以一个字节字符串的形式返回。 如果你需要文本形式返回,加一个解码步

  • 问题内容: 如何使用排序集从Redis获取多个键的值? 这将有两个用户。 如何在一个查询中检索具有键“ David”和“ Linda”的用户? 问题答案: 无需在Redis中引入新命令的方法有多种。 例如,您可以使用感兴趣的名称填充临时集,然后计算该临时集与zset之间的交集: 使用流水线操作,只会产生一次往返,并且您可以在tmp中填充任意数量的输入参数。 使用Redis 2.6,您还可以将这些行

  • 问题内容: 我目前正在与Redis一起玩,我有几个问题。是否可以从键数组中获取值? 例: 当我返回时。我可以遍历此列表并获得用户:1,获得用户:2。但这感觉不对,有没有办法让所有与会者的信息一目了然? 在rails中,我会做这样的事情: 但是在redis中我不能,因为它返回键,而不是存储在该键上的实际对象。 谢谢 :) 问题答案: 在项目上循环并同步访问每个元素不是很有效。使用Redis 2.4,

  • 我想在一个外键中保存多个关系对象,但不幸的是,我在下面附加了一个错误。我的数据库中已经有ID为189的对象 错误: views.py 序列化程序。派克 模型。派克

  • 问题内容: for (Entry entry : map.entrySet()) { Double key = entry.getKey(); String value = entry.getValue(); 迭代地图时是否可以知道上一个元素和下一个元素是什么? 问题答案: 您可以使用此方法,它的迭代器以升序顺序返回条目: 每个条目检索都是O(logN),因此对于完整迭代而言,这不是最有效的方法。

  • 如何从事件处理程序中的对象打印多个键? 这里是链接到我的代码-https://codesandbox.io/s/suspicious-hamilton-erkqv 在第35行,我用对象“x”调用事件处理程序ChangeName。我可以打印一个名为“name”(x.name)的键。我如何打印x对象的所有3个道具(名称、id、类型)?? 尝试将x转换为object.keys(x)的数组,但当我循环通过