是否可以在Laravel中的列值之前添加一些字符串?

发布于 2025-02-13 07:34:24 字数 852 浏览 0 评论 0 原文

因此,我需要将AWS S3 URL放在附件值之前。我使用 Laravel查询构建器从数据库中获取数据。

查询

$query = DB::table('subscriber')->select(['ID as SBC_ID','SUBSCRIBER_NAME','ATTACHMENT_OTHERS'])
->get();

return $query;

结果

[   
    {
        "SBC_ID": 1,
        "SUBSCRIBER_NAME": "NAME",
        "ATTACHMENT_OTHERS": "uploads/1655362922-Annotation%202022-05-31%20141139.png"
    },
    {
        "SBC_ID": 2,
        "SUBSCRIBER_NAME": "NAME 2",
        "ATTACHMENT_OTHERS": "uploads/1655362922-image.png"
    }
]

attactment_others 来自表单请求,并将其上传到AWS S3。我只是插入附件路径,而不是完整的S3 URL。但是现在,我需要返回完整的URL。

假设我将AWS URL放在 .env 文件中。 aws_url = https://loremipsum.s3.ap-southeast-1.amazonaws.com

是否可以从我的 QUERY BUERDER 中返回结果?

So, i need to put AWS S3 URL before the attachment value. I use Laravel Query builder to get data from database.

Query

$query = DB::table('subscriber')->select(['ID as SBC_ID','SUBSCRIBER_NAME','ATTACHMENT_OTHERS'])
->get();

return $query;

Result

[   
    {
        "SBC_ID": 1,
        "SUBSCRIBER_NAME": "NAME",
        "ATTACHMENT_OTHERS": "uploads/1655362922-Annotation%202022-05-31%20141139.png"
    },
    {
        "SBC_ID": 2,
        "SUBSCRIBER_NAME": "NAME 2",
        "ATTACHMENT_OTHERS": "uploads/1655362922-image.png"
    }
]

The ATTACHMENT_OTHERS is from Form Request and uploaded to AWS S3. I just insert the attachment path, not full S3 URL. But now, i need to return full URL.

Let say i put my AWS url in the .env file.
AWS_URL=https://loremipsum.s3.ap-southeast-1.amazonaws.com

Is it possible to return the result from my query builder ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

红颜悴 2025-02-20 07:34:25

您可以使用 laravel raw表达式 mysql contat函数。例如:

$query = DB::table('subscriber')
    ->select([
        'ID as SBC_ID', 
        'SUBSCRIBER_NAME', 
        DB::raw('CONCAT(\'https://loremipsum.s3.ap-southeast-1.amazonaws.com\', ATTACHMENT_OTHERS) as ATTACHMENT_OTHERS')
    ])->get();

此外,您将该URL放入.env中

AWS_URL=https://loremipsum.s3.ap-southeast-1.amazonaws.com

并创建新的配置文件,例如config/aws.php

return [
    'attachment_url' => env('AWS_URL', 'AWS_URL'),
]

,然后可以有一个小的代码:

$query = DB::table('subscriber')
    ->select([
        'ID as SBC_ID',
        'SUBSCRIBER_NAME',
        DB::raw('CONCAT(\''.config('aws.attachment_url').'\', ATTACHMENT_OTHERS) as ATTACHMENT_OTHERS')
    ])->get();

如果您通过JSON API返回此数据,那么我建议您使用 laravel api api Resources

You can use Laravel Raw Expressions and MySQL CONCAT function. E.g.:

$query = DB::table('subscriber')
    ->select([
        'ID as SBC_ID', 
        'SUBSCRIBER_NAME', 
        DB::raw('CONCAT(\'https://loremipsum.s3.ap-southeast-1.amazonaws.com\', ATTACHMENT_OTHERS) as ATTACHMENT_OTHERS')
    ])->get();

Additionally, you put that url in .env

AWS_URL=https://loremipsum.s3.ap-southeast-1.amazonaws.com

and create new config file, e.g. config/aws.php

return [
    'attachment_url' => env('AWS_URL', 'AWS_URL'),
]

and then you can have a little neater code:

$query = DB::table('subscriber')
    ->select([
        'ID as SBC_ID',
        'SUBSCRIBER_NAME',
        DB::raw('CONCAT(\''.config('aws.attachment_url').'\', ATTACHMENT_OTHERS) as ATTACHMENT_OTHERS')
    ])->get();

If you returning this data via JSON API, then I suggest that you use Laravel API Resources

妄司 2025-02-20 07:34:25

您可以使用SQL的内置带有 db立面,类似这样的东西:

use Illuminate\Support\Facades\DB;
// ...
$aws_host = "https://loremipsum.s3.ap-southeast-1.amazonaws.com" . "/";
$query = DB::table('subscriber')->select([
    'ID as SBC_ID',
    'SUBSCRIBER_NAME',
    DB::raw('CONCAT("' . $aws_host . '", ATTACHMENT_OTHERS) AS ATTACHMENT_OTHERS'),
])->get();

You can use SQL's built-in function CONCAT() with DB facade, something like like this:

use Illuminate\Support\Facades\DB;
// ...
$aws_host = "https://loremipsum.s3.ap-southeast-1.amazonaws.com" . "/";
$query = DB::table('subscriber')->select([
    'ID as SBC_ID',
    'SUBSCRIBER_NAME',
    DB::raw('CONCAT("' . $aws_host . '", ATTACHMENT_OTHERS) AS ATTACHMENT_OTHERS'),
])->get();
暮凉 2025-02-20 07:34:25
$query = DB::table('subscriber')->select(['ID as SBC_ID','SUBSCRIBER_NAME','ATTACHMENT_OTHERS'])
->get();
$AWS_URL = "https://loremipsum.s3.ap-southeast-1.amazonaws.com/";
foreach($query as $result)
{
$SBC_ID = $result->SBC_ID;
$SUBSCRIBER_NAME = $result->SUBSCRIBER_NAME;
$ATTACHMENT_OTHERS = $AWS_URL.$result->ATTACHMENT_OTHERS;
}

$query = ([
'SBC_ID' => $SBC_ID,
'SUBSCRIBER_NAME' => $SUBSCRIBER_NAME,
'ATTACHMENT_OTHERS' => $ATTACHMENT_OTHERS 
]);

return $query;
$query = DB::table('subscriber')->select(['ID as SBC_ID','SUBSCRIBER_NAME','ATTACHMENT_OTHERS'])
->get();
$AWS_URL = "https://loremipsum.s3.ap-southeast-1.amazonaws.com/";
foreach($query as $result)
{
$SBC_ID = $result->SBC_ID;
$SUBSCRIBER_NAME = $result->SUBSCRIBER_NAME;
$ATTACHMENT_OTHERS = $AWS_URL.$result->ATTACHMENT_OTHERS;
}

$query = ([
'SBC_ID' => $SBC_ID,
'SUBSCRIBER_NAME' => $SUBSCRIBER_NAME,
'ATTACHMENT_OTHERS' => $ATTACHMENT_OTHERS 
]);

return $query;
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文