为laravel controller / view创建函数以加载数据库值

问题描述 投票:2回答:2

我正在努力更新laravel刀片模板,以将一些数据库信息插入到html表中。为了做到这一点,我不得不为这个刀片添加新的数据到控制器,这就是我遇到麻烦的地方。

我仍然试图用laravel来理解更多,所以我认为我的语法或创建这些数据的方法是不正确的,但我现在无法把手指放在它上面。

在我的下面的函数中,$calls_allowed部分已经存在,它当前在页面上工作。我创建了函数的$contact_events部分,这就是我的问题所在。

在我看来,我在相关的html表中创建了一个foreach循环和if语句。表加载,但即使数据库中有经销商的记录,它也是空的。

我想说if $dealer-> id matches contact_events.dealer_num, load all records for that dealer

contact_events是表,dealer_num是我匹配的列,然后我试图将该表中的列(updated_atmethodnotes)加载到html表中。

受影响的代码如下。视图/路由/控制器工作,它只是我正在创建的这个不加载数据的功能。任何帮助深表感谢。

控制器代码:

public function show($id)
{
    $d = Dealer::find($id);
    if(!$d){
        \Session::flash('warning_message', 'Sorry that resource can not be found.');
        return redirect()->route('account.dealer.index');
    }

    $calls_allowed = DB::table('dealers.dealers')->
    where('dealer_num', $id)->
    pluck('calls_allowed');

    $contact_events = DB::table('dealers.contact_events')->
    where('dealer_num', $id)->
    pluck('updated_at', 'method', 'notes');

    if(!empty($calls_allowed)){
        $d->calls_allowed = $calls_allowed[0];
    } else {
        $d->calls_allowed = null;
    }
    return view('Account.Dealer.show')->with('dealer', $d);
}

查看代码:

<thead>
    <tr>
        <th>Contacted Date</th>
        <th>Type of Contact</th>
        <th>Call Notes</th>
    </tr>
</thead>
@foreach($dealer->contact_events as $events)
    @if($events->dealer_num = $dealer->id)
        <tbody>
            <tr>
                <td>{{$events->updated_at}}</td>
                <td>{{$events->method}}</td>
                <td>{{$events->notes}}</td>
            </tr>
        </tbody>
    @endif
@endForeach
php sql laravel
2个回答
2
投票

看起来您在从数据库检索后没有将数据分配给对象。

$contact_events = DB::table('dealers.contact_events')->
where('dealer_num', $id)->
pluck('updated_at', 'method', 'notes');

// add this
$d->contact_events = $contact_events;

0
投票

这似乎是使用Laravel的Eloquent ORM的力量的最佳时机......

Check out the with and has in the Laravel docs

这将需要根据您的需求进行一些调整,但它将是这样的:

$d = Dealer::where('id', '=', $id)
     ->with('contact_events')->first();

这使用Eloquent来获取属于$ id的经销商的所有contact_events。

然后你可以做这样的事情:这假设calls_allowed是经销商牌桌上的记录。如果我误解了这一点,你仍然可以运行,而不是像你拥有它那样包含它。

@if(!is_null($dealer->calls_allowed)
@foreach($dealer->contact_events as $events)
    <tbody>
        <tr>
            <td>{{$events->updated_at}}</td>
            <td>{{$events->method}}</td>
            <td>{{$events->notes}}</td>
        </tr>
    </tbody>
@endForeach
@endif
© www.soinside.com 2019 - 2024. All rights reserved.