Как конфертировать в laravel? - PullRequest
0 голосов
/ 11 июля 2019

Не могли бы вы мне немного помочь с этим? Я хочу преобразовать это для laravel 5.2, а также добавить таблицу role_users со столбцами user_id и user_role. Можете ли вы помочь мне, пожалуйста?

$career_solutions_data = DB::select("
    SELECT 
    career_solutions.id, 
    career_solutions.subject, 
    career_solutions.date, 
    career_solutions.public, 
    career_solutions.views, 
    career_solutions.optional, 
    career_solutions.on_offer, 
    users.username, 
    users.profile_picture, 
    categories.category, 
    categories.category_url,
    categories.color, 
    career_solutions_categories.category as sub_category 

    FROM career_solutions 

    INNER JOIN categories 
        ON categories.id = career_solutions.topic_category_id 

    INNER JOIN career_solutions_categories 
        ON career_solutions_categories.id = career_solutions.topic_subcategory_id 

    INNER JOIN users 
        ON users.id = career_solutions.user_id 

    INNER JOIN privacy_settings 
        ON privacy_settings.user_id = users.id 

    WHERE users.deleted_at IS NULL 
    AND (
            (privacy_settings.career_solutions = 0 AND public = 1 ) 
            OR (users.id IN (

                SELECT contacts.contact_id 
                FROM contacts 
                WHERE contacts.user_id = $id
                )
            )
        ) 

    OR users.id = $id

    ORDER BY date desc limit 5000
");

1 Ответ

1 голос
/ 11 июля 2019

Я не уверен на 100% в этом, и, скорее всего, это не сработает.

НО - это даст вам хорошую отправную точку для перестройки этого запроса в Eloquent.

Вероятно, есть лучший способ сделать это, но опять же, это больше для отправной точки. Вы действительно должны пытаться выучить Eloquent лучше, так как это довольно мощный и свободный ORM. (Он читается намного лучше, чем T-SQL!).

Но в любом случае это будет выглядеть примерно так:

CareerSolutions::with(
    [
        'categories',
        'categories.career_solutions_categories',
        'users',
        'users.privacy_settings'
    ], function($query) {
        $query->where('users.privacy_settings.career_solutions', 0);
        $query->where('users.privacy_settings.public', 1);
        $query->orWhereIn('contacts.contact_id', function() {
            Contact::where('user_id', $id)->pluck('id');
        });
    }
)->orWhere('users.id', $id)->get();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...