lakinmohapatra / filemaker_laravel
Requires
- php: >=5.3.0
- illuminate/database: 5.2.*
- illuminate/support: 5.2.*
This package is not auto-updated.
Last update: 2022-02-01 12:58:17 UTC
README
安装 Laravel
Laravel 使用 Composer 来管理其依赖项。因此,在使用 Laravel 之前,请确保您的机器上已安装 Composer。首先,使用 Composer 下载 Laravel 安装程序
composer create-project --prefer-dist laravel/laravel blog
您可能需要授予存储目录的写入权限(有关详细信息,请参阅 laravel.com)。
安装 FileMakerLaravel 包
在 composer.json 的 require 部分添加以下行。
lakinmohapatra/filemaker_laravel": "*"
加载官方 FileMaker PHP API 的方法。
-
将 FileMaker 官方库作为 Laravel 包制作,并通过 composer 加载。
-
由于我们的包依赖于官方的 FileMaker API,您需要通过 composer 自动加载来加载它。执行此操作的步骤。
- 转到 vendor/opensource-mindfire/
- 创建一个名为 "filemakerapi" 的目录。
- 粘贴 FileMaker.php 文件及其相关类文件。
转到根目录中的 composer.json。并添加以下行。
"autoload": {
"classmap": [
"vendor/opensource-mindfire/filemakerapi/FileMaker.php"
],
}
这将自动加载 FileMaker.php 并使其在整个包中可用。
在终端中运行以下命令以安装 FileMakerLaravel
composer update
配置
打开 config/app.php,并将以下行添加到 providers 数组中
'filemaker_laravel\Database\FileMakerServiceProvider::class',
在 config/database.php 中将默认连接类型更改为 filemaker
'default' => 'filemaker',
将以下内容添加到 connections 数组中
'filemaker' => [
'driver' => 'filemaker',
'host' => env('DB_HOST'),
'database' => env('DB_DATABASE'),
'username' => env('DB_USERNAME'),
'password' => env('DB_PASSWORD'),
],
在您的根目录中创建一个名为 .env 的新文件,并添加以下内容,同时包含您的数据库连接详细信息
DB_HOST=YourHost
DB_DATABASE=YourDatabase
DB_USERNAME=YourUsername
DB_PASSWORD=YourPassword
请注意,如果您正在使用版本控制,则不希望 .env 文件成为您存储库的一部分,因此默认情况下它包含在 .gitignore 中。
用法
创建模型
Artisan 是 Laravel 包含的命令行界面。它提供了一些有用的命令,供您在开发应用程序时使用。它由强大的 Symfony Console 组件驱动。要查看所有可用的 Artisan 命令列表,您可以使用 list 命令
php artisan list
通常,我们使用以下 artisan 命令在 Laravel 中创建模型。php artisan make:model Test
在此处,Test.php 模型文件将在 app/Test.php 中生成。此类扩展 Laravel 的 Eloquent Model 类,但我们需要它扩展 filemaker_laravel Model 类。从新创建的 Test.php 文件中删除以下行
use Illuminate\Database\Eloquent\Model;
然后替换为以下行
use filemaker_laravel\Database\Eloquent\Model;
在您的模型类中,您需要指定在查询 FileMaker 数据库时应使用的布局。为此,请在 Test 类内部添加以下行
protected $layoutName = 'YourTestLayoutName';
默认情况下,Laravel 将假定您的表的主键是 "id"。如果您有不同的主键,则需要在该类内部添加以下内容
protected $primaryKey = 'YourTestPrimaryKey';
Eloquent 使用
检索所有记录
如果您处于控制器中,则使用模型名称(Test)。如果您处于模型中,则使用"self"代替"Test"。
Test::all();
返回类型与Laravel相同
添加约束
由于每个Eloquent模型都充当查询构建器,您也可以向查询中添加约束,然后使用get方法检索结果
Test::where('active', 1)
->orderBy('name', 'desc')
->skip(10)
->take(10)
->get();
检索单个记录
通过主键检索模型
Test::find(1);
检索与查询约束匹配的第一个模型
Test::where('active', 1)->first();
基本插入
要在数据库中创建新记录,只需创建一个新的模型实例,设置模型上的属性,然后调用save方法
$test = new Test;
$test->name = 'name';
$test->save();
基本更新
save方法也可以用于更新数据库中已经存在的模型。要更新模型,您应该检索它,设置您希望更新的任何属性,然后调用save方法。
$test = Test::find(1);
$test->name = 'New Name';
$test->save();
也可以对匹配给定查询的任意数量的模型执行更新操作。
Test::where('active', 1)
->where('address', 'San Diego')
->update(['name' => 'Deb']);
删除模型
要删除模型,请在模型实例上调用delete方法
$test = Test::find(1);
$test->delete();
其他创建方法
您还可以使用两种其他方法通过批量分配属性来创建模型:firstOrCreate和firstOrNew。firstOrCreate方法将尝试使用给定的列/值对定位数据库记录。如果模型在数据库中找不到,将使用给定的属性插入记录。
firstOrNew方法与firstOrCreate类似,将尝试在数据库中找到与给定属性匹配的记录。但是,如果没有找到模型,将返回一个新的模型实例。请注意,由firstOrNew返回的模型尚未持久化到数据库。您需要手动调用save来持久化它
// Retrieve the user by the attributes, or create it if it doesn't exist...
$user = App\User::firstOrCreate(['name' => 'user name ']);
// Retrieve the flight by the attributes, or instantiate a new instance...
$user = App\User::firstOrNew(['name' => 'user name']);
执行FileMaker脚本
您可以通过以下命令执行FileMaker脚本。请将脚本名称和参数传递给performScript函数。然后您需要使用get()来获取预期结果。
$this->performScript('Web_Contact_Creation_Script', 'test_value')->get('test_field1');
访问门户
无需额外操作。此包足够智能,可以自动访问布局中附加的所有门户。例如:假设您在test布局中有一个名为test_portal的门户。假设test_portal有一个字段portal_field1和三行。那么您将得到以下结果。
"test_portal::portal_field1" => array:3 [▼
0 => "Test1"
1 => "Test2"
2 => "Test3"
]
注意
如果您遇到类似于" Deprecated: Assigning the return value of new by reference is deprecated in /FileMaker/Implementation/Parser/FMResultSet.php on line 65"的异常
请将最新版本的PEAR.php替换为FileMaker/文件夹中较旧的PEAR.php版本。实际上,这是官方FileMaker PHP API中的错误,它显示了这些已弃用和严格的警告。
默认情况下,任何与FileMaker包相关的错误都将记录到您的Laravel日志文件中。
问题报告
如果您在此软件包中发现任何问题,请点击GitHub导航栏中的“问题”部分并添加您的问题详情。https://github.com/opensource-mindfire/filemaker_laravel/issues