1

I am using Laravel 5.8 to create an App. When I wanted to display the view, it generated an error as shown below:

new error screen

syntax error, unexpected ')', expecting '['

unexpected

Controller

    public function serviceOverview(Request $request)
{
    $data['title'] = 'Subscription Overview';
$serviceoverviews = DB::table("service_package")
   ->join('services', 'services.id', '=', 'service_package.service_id')
   ->join('service_type', 'service_type.id', '=', 'services.service_type')
   ->select('service_package.title as service_id', 'service_package.title as package_name', DB::raw("DATE(service_package.created_at) as created_at"), 'service_package.price', 'service_package.days','services.name as service_name','service_type.name as service_type');

$render=[];

    if(isset($request->package_name))
    {
        $serviceoverviews=$serviceoverviews->where('serviceoverviews','like','%'.$request->serviceoverviews.'%');
        $render['package_name']=$request->package_name;
    }    
    if(isset($request->service_id))
    {
        $serviceoverviews=$serviceoverviews->where('service_id',$request->service_id);
        $render['service_id']=$request->service_id;
    }

    $serviceoverviews= $serviceoverviews->orderBy('created_at','DESC');
    $serviceoverviews= $serviceoverviews->paginate(15);
    $serviceoverviews= $serviceoverviews->appends($render);
    $data['serviceoverviews'] = $serviceoverviews;    

    return view('report.serviceOverview',$data);
}

In the Controller, I tried to do some filtering. Also, I did raw query.

View

    <div class="box box-primary">
        <div class="box-header with-border">
            @if(Session::has('flash_message'))
        <div class="alert alert-success">
            {{ Session::get('flash_message') }}
        </div>
        @endif 
        @if(count($detailsubscriptions))            
    <table class="table table-bordered table-hover table-striped table-condesed" id="commenter_info_table">
    <caption></caption>
    <thead>
        <tr>
            <td>#</td>
            <td>Service</td>
            <td>Package</td>
            <td>Service Type</td>
            <td>Date</td>
            <td>Price</td>
            <td>Days</td>

        </tr>
    </thead>

    <tbody>
        @foreach($serviceoverviews as $key => serviceoverview)
            <tr>
                <td>{{ ++$key }}</td>
                <td>{{ serviceoverview->service_name }}</td>
                <td>{{ $serviceoverview->package_name }}</td>
                <td>{{ $serviceoverview->service_type }}</td>
                <td>{{ serviceoverview->created_at }}</td>
                <td>{{ $serviceoverview->price }}</td>
                <td>{{ $serviceoverview->days }}</td>                
            </tr>

        @endforeach
            <tr>
            <td colspan="8">
                {{ $serviceoverview->links() }}
            </td>
            </tr>         
    </tbody>  

    </table>   
            @else
        <div class="row text-center">
            <h2>No Service Overview to show</h2>
        </div>
        @endif        
    </div>
    </div>

I tried to check the code, but found nothing. How do I resolve this issue

2
  • 2
    You are missing $ sign Commented Jun 13, 2019 at 11:36
  • Since this was just a typographical error, I have voted to close this question. Commented Jun 13, 2019 at 11:51

4 Answers 4

2

You have missed a $ from the $serviceoverview variable in your blade @foreach. Change:

@foreach($serviceoverviews as $key => serviceoverview)

To

@foreach($serviceoverviews as $key => $serviceoverview)
Sign up to request clarification or add additional context in comments.

1 Comment

After doing all those corrections, I now have another error: htmlspecialchars() expects parameter 1 to be string, object given
0

Here is the full code updated with changes. Please refer to this

Controller.php

public function serviceOverview(Request $request)
{
    $builder = DB::table("service_package")
                    ->join('services', 'services.id', '=', 'service_package.service_id')
                    ->join('service_type', 'service_type.id', '=', 'services.service_type')
                    ->select('service_package.title as service_id', 'service_package.title as package_name', DB::raw("DATE(service_package.created_at) as created_at"), 'service_package.price', 'service_package.days','services.name as service_name','service_type.name as service_type');

    if($request->filled('package_name'))) {

        $builder = $builder->where('serviceoverviews','like','%'.$request->serviceoverviews.'%');
    }    

    if(isset($request->service_id))
    {
        $builder=$builder->where('service_id',$request->service_id);
    }

    $serviceoverviews = $builder->orderBy('created_at','DESC')->paginate(15);

    $data = [
        'title' => 'Subscription Overview',
        'serviceoverviews' => $serviceoverviews
    ];

    return view('report.serviceOverview', $data);
}

Now change your view code like this.

view.blade.php

<table class="table table-bordered table-hover table-striped table-condesed" id="commenter_info_table">
    <caption></caption>
    <thead>
        <tr>
            <td>#</td>
            <td>Service</td>
            <td>Package</td>
            <td>Service Type</td>
            <td>Date</td>
            <td>Price</td>
            <td>Days</td>

        </tr>
    </thead>

    <tbody>
        @foreach($serviceoverviews as $key => $serviceoverview)
            <tr>
                <td>{{ ++$key }}</td>
                <td>{{ $serviceoverview->service_name }}</td>
                <td>{{ $serviceoverview->package_name }}</td>
                <td>{{ $serviceoverview->service_type }}</td>
                <td>{{ serviceoverview->created_at }}</td>
                <td>{{ $serviceoverview->price }}</td>
                <td>{{ $serviceoverview->days }}</td>                
            </tr>

        @endforeach
        <tr>
            <td colspan="8">
                {{ $serviceoverview->appends(\Request::all())->links() }}
            </td>
        </tr>         
    </tbody>
</table>

5 Comments

Nicely spotted!
After doing all those corrections, I now have another error: htmlspecialchars() expects parameter 1 to be string, object given
@user11352561 change this <td>{{ serviceoverview->created_at->format('Y-m-d H:i:s') }}</td>.
The error is still there. I've updated the error screen in my code
0

You are using serviceoverview in place of $serviceoverview in view file. That would be an issue.

Comments

0

You have made some typo and one logical error.

Change

  1. @foreach($serviceoverviews as $key => serviceoverview) to @foreach($serviceoverviews as $key => $serviceoverview)

  2. <td>{{ serviceoverview->service_name }}</td> to <td>{{ $serviceoverview->service_name }}</td>

  3. You have put {{ $serviceoverview->links() }} out side of the foreach loop

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.