【问题标题】:How add SQL request in Laravel index method?如何在 Laravel 索引方法中添加 SQL 请求?
【发布时间】:2017-10-05 07:48:36
【问题描述】:

我有foo tablefoo modelfoo controller。在test controller 我有函数index:

public function index()
{
    return Foo::query(true)->filter(Request::input())->paginate()->appends(Request::input());
}

返回foo table中所有元素的列表。

1) 如何在此控制器中还从表bar 中返回字段bar_id,其中列type_id = 1

2) 在表 bar 中,我有外键 bar_elements。元素bar如何返回所有bar_elements

数据库结构

【问题讨论】:

  • 你可以这样做return Foo::query(true)->with('bars')->with('bar_elements')->filter(Request::input())->paginate()->appends(Request::input()); } 假设你有barsbar_elements 在Foo 模型和Bar 模型中连续的关系。
  • @Maraboc 我尝试这样:return Foo::query(true)->with('bars', Bar::whereTypeId('1'))->with('bar_elements')->filter(\Request::input())->paginate()->appends(\Request::input());,但得到这个 - ErrorException mb_strpos() expects parameter 1 to be string, object given
  • 不,你应该这样做with(['bars' => function ($query) { $query->where('type_id', 1'); }]).... :)
  • @Maraboc ->with(['bar' => function($query){$query->where('id','1');}])->with('bar_elements') 1) where not found 2) Call to undefined relationship [bar_elements] on model [App\Models\Foo (也许这必须是与 bar 的关系,但不是 foo)]。
  • 是的,这就是我在评论中所说的!还有一件事就是这样->with('bars.bar_elements')

标签: php database laravel


【解决方案1】:

试试这个:

public function index()
{
    return Foo::query(true)->with(['bars' => function ($query) { 
                                        $query->where('id', 1'); 
                                    }])
                           ->with('bars.bar_elements')
                           ->filter‌​(Request::input())
                           ->‌​paginate()
                           ->appends(‌​Request::input()); 
    } 
}   

假设您在 Foo 模型中有 bars,在 Bar 模型中有 bar_elements 作为关系。

此查询->with(['bar' => function($query){$query->where('id','1');}]) 将为 evry Foo 返回一个 id = 1 的条(如果有的话),所以如果你想要你的条,你所要做的就是$foo->bars 这将返回你加载的条的集合,在这种情况下,只有一个 id = 1 的条或null,如果没有栏。

【讨论】:

猜你喜欢
  • 2013-08-10
  • 2015-09-17
  • 2019-05-29
  • 1970-01-01
  • 2021-09-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-16
相关资源
最近更新 更多