Я перевожу пользователей из WordPress в Laravel. Я хочу объединить пользователей и таблицы user_meta. Затем я импортирую в новую таблицу.
В моей таблице user_meta у меня есть несколько строк, назначенных user_id. Как импортировать несколько строк со своим уникальным идентификатором.
Например.
umeta_id = 1, user_id = 1, meta_key = first_name, meta_value = Bob
umeta_id = 2, user_id = 1, meta_key = last_name, meta_value = Builder
В приведенном выше примере я хотел бы добавить first_name и last_name к выводу запроса.
Затем импортируйте в новый столбец в БД Laravel (и прекратите использовать подход таблицы ссылок user_meta, используемый WordPress).
Вот мой текущий код запроса и вывод, который я получаю:
$wp_users = DB::connection('wordpress_db')
// ->select(DB::raw('um.meta_value as first_name'))
->select('um.meta_value as first_name')
->table('wp_users')
->leftJoin('wp_usermeta as um', function ($q) {
$q->on('um.user_id', '=', 'wp_users.id')
->where('um.meta_key', '=', "first_name");
})
->orderBy('wp_users.id');
и если я дам вывод:
+"ID": 1
+"user_login": "123"
+"user_pass": "123"
+"user_nicename": "123"
+"user_email": "b@x"
+"user_url": "https://x"
+"user_registered": "2016-1-1 13:47:32"
+"user_activation_key": ""
+"user_status": 0
+"display_name": "Bobby Builds"
+"umeta_id": 222
+"user_id": 1
+"meta_key": "first_name"
+"meta_value": "Bob"
Вместо meta_value и meta_key я просто хочу 'first_name' => 'bob', а затем также возможность сделать это для нескольких значения в справочной таблице user_meta
Если бы я писал RAW sql, то я бы подошел к этому, имея left_join для каждого значения, которое я хочу получить. Затем я бы создал псевдоним, например
SELECT um1.meta_value в качестве first_name SELECT um2.meta_value в качестве last_name
LEFTJOIN wp_usermeta в качестве um1 LEFTJOIN wp_usermeta в качестве um2
без удачи - любые идеи приветствуются.
Спасибо!
Я написал о некоторых процессах, участвующих здесь, для дальнейшего ознакомления: http://raison.co/migrating-wordpress-users-to-laravel/