Laravel Смещение компонента Livewire - PullRequest
3 голосов
/ 04 марта 2020

Я пытаюсь получить данные о технических специалистах через контроллер laravel, вызываемый внутри компонента Livewire. В некоторых случаях контроллер возвращает null, поскольку технические специалисты не связаны.

Вот мой компонент livewire, отображающий представление:

class TechniciansAssociated extends Component
{
    public function render()
    {
        $technicians = (new HomeController())->getTechnicians();

        return view('livewire.dashboard.technicians-associated', [
            'technicians' => $technicians,
        ]);
    }
}

Здесь вызывается функция из домашнего контроллера:

public function getTechnicians()
{
    $customer_ids = json_decode(User::find(Auth::id())->userCustomers->customer_id,true);

    $technicians_data = DB::connection('mysql')
        -> select('SELECT distinct users.id, users.name, users.surname, users.lastname, users.email, users.cargo, users.photo
           FROM users
           INNER JOIN contractsproductsmulti AS cpm ON users.id = cpm.userId
           INNER JOIN contractsproducts AS cp ON cp.id = cpm.contractproduct_id
           INNER JOIN contracts AS cont ON cont.id = cp.idcontract
           WHERE users.isActive = 1 AND cont.idCustomer IN (?)', $customer_ids
        );

    if (count($technicians_data) > 0){
        return $technicians_data;
    }

    return null;
}

Наконец, при попытке получить основной вид, где отображается визуализация livewire, я получил ошибку

@section('content')

<section id="dash-cust-info">
    <div class="row p-t-30 p-b-30">
        <div class="col-md-6">
            <h4>Customer info</h4>
        </div>
        <div class="col-md-3">
            <h4>Comm_1</h4>
            <div class="card no-border no-margin">
                @livewire('dashboard.commercials-associated')
            </div>
        </div>
        <div class="col-md-3">
            <h4>Comm_2</h4>
            <div class="card no-border no-margin">
                @livewire('dashboard.technicians-associated')
            </div>
        </div>
    </div>
....

Ошибка:

Undefined offset: 1 (View: /......../resources/views/home.blade.php)

Ответы [ 2 ]

2 голосов
/ 09 марта 2020

Я думаю этот ответ дает хорошее объяснение такого рода проблем в livewire. Оставьте это здесь, так что любой, у кого возникнут подобные проблемы в будущем, получит помощь. Добро пожаловать

1 голос
/ 04 марта 2020

Хорошо, компонент LiveWire нуждается в элементе HTML, чтобы получить результаты в своем собственном представлении. Например:

<div> //missed on my code
    @foreach($users as $user)
        {{$user->id}}
    @endforeach
</div>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...