【问题标题】:Laravel: Retrieve data inputted by userLaravel:检索用户输入的数据
【发布时间】:2018-10-16 20:10:21
【问题描述】:

我对 Laravel 很陌生,我对如何检索某些用户输入的数据感到困惑。

在我的项目中,有一个用户配置文件应该显示用户提交的所有表单。

这是我的控制器功能:

public function clientAccount(BookingRequest $bookings)
{
    $client = Client::whereUserId(Auth::id())->with('user')->first();
    $bookings = BookingRequest::with(Auth::id())->with('client')->first(); //unsure about here//
    return view('client.account', compact('client','bookings'));
}

这是我的模型:

    public function client()
{
    return $this->belongsTo('App\Client', 'client_id', 'user_id');
}

我该如何解决这个问题?

编辑:

我尝试使用它,但不知何故我没有得到任何显示

$bookings = BookingRequest::where('client_id',Auth::id());

【问题讨论】:

  • 你得到什么错误?
  • 我似乎收到此错误“传递给 Illuminate\Database\Eloquent\Builder::parseWithRelations() 的参数 1 必须是数组类型,给定整数,在 C:\Users\Daniela Echavez 中调用\Desktop\therapeace\vendor\laravel\framework\src\Illuminate\Database\Eloquent\Builder.php on line 1036"
  • 对我来说奇怪的是 Booking 模型的用法,你确定你的模型是 BookingRequest 还是 Booking
  • 叫做 BookingRequest
  • 您需要在数据库中检查您是否有该客户端 ID 的条目,以便返回结果。因为with 的使用不是基于id 的关系,所以如果你的BookingRequest 模型中有client 函数,BookingRequest::with('client') 将起作用。

标签: laravel laravel-5 laravel-5.5 laravel-5.6


【解决方案1】:

如果关系需要是一对多的,意味着一个客户有很多预订,那么在您的客户模型中,您应该具有以下功能:

public function bookings() 
{
    return $this->hasMany(BookingRequest::class);
}

那么你只需要找到客户,然后你就可以使用

$client->bookings()

它将列出该客户的所有预订。

【讨论】:

  • 您的答案是正确的@nakov,但您可以将其更改为$client->bookings 作为闭包。 $client->bookings()->count()$client->bookings()->first() 都可以
【解决方案2】:

从纳科夫开始:

public function clientAccount()
{
  $client = Client::whereUserId(Auth::id())->with('user')->first();
  $bookings = $client->bookings();

  return view ('client.account')->with('bookings', $bookings)
}

在您的用户个人资料视图中:

foreach($bookings as $booking){
  // do something with each booking
  // e.g. var_dump($booking) to see the data you're working with
}

【讨论】:

    【解决方案3】:

    感谢您的所有回复!

    我现在可以使用这个来检索数据:

    public function clientAccount()
    {
        $client = Client::whereUserId(Auth::id())->with('user')->first();
        $bookings = $client->booking()->with('client')->get(); 
        return view('client.account', compact('client','bookings'));
    }
    

    在我的模型中,我使用了这个

    public function booking()
    {
        return $this->hasMany('App\BookingRequest', 'client_id', 'user_id');
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-31
      • 1970-01-01
      • 1970-01-01
      • 2021-09-24
      • 2014-03-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多